package com.tangwt.util;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.Properties;
import com.tangwt.bean.MyTag;
public class ColumUtil {
private static Properties pro = new Properties();
public static String getColumName(String colum) {
StringBuffer ff = new StringBuffer("");
for (int i = 0; i < colum.length(); i++) {
char c = colum.charAt(i);
if (!Character.isLowerCase(c)) {
ff.append("_").append(String.valueOf(c).toLowerCase());
} else {
ff.append(c);
}
}
return ff.toString();
}
public static String getTableName(String tableName) {
if (tableName.contains(".")) {
String[] tables = tableName.split("\\.");
tableName = tables[tables.length - 1];
}
StringBuffer ff = new StringBuffer("");
for (int i = 0; i < tableName.length(); i++) {
char c = tableName.charAt(i);
if (!Character.isLowerCase(c)) {
if (i == 0)
ff.append(String.valueOf(c).toLowerCase());
else
ff.append("_").append(String.valueOf(c).toLowerCase());
} else {
ff.append(c);
}
}
return ff.toString();
}
public static String getCreateSql(Object obj) {
Class<?> clz = obj.getClass();
Field[] fields = clz.getDeclaredFields();
StringBuffer sql = new StringBuffer("CREATE TABLE ");
String tableName = getTableName(clz.getName());
sql.append(tableName).append(" (");
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
Annotation[] aArray = field.getDeclaredAnnotations();
boolean isPK = false;
String length = "0";
if (aArray != null) {
for (Annotation an : aArray) {
MyTag tag = (MyTag) an;
isPK = tag.isPK();
length = tag.length();
}
}
String f = field.getName();
String colum = ColumUtil.getColumName(f);
try {
InputStream is = ColumUtil.class.getClass().getResourceAsStream("/type.properties");
pro.load(is);
String fileType = field.getType().toString();
String[] fileTypes = fileType.split("\\.");
fileType = (String) pro.get(fileTypes[fileTypes.length - 1]);
//System.out.println(fileType);
sql.append(colum).append(" ").append(fileType);
if(!(length.equals("0"))){
sql.append("(").append(length).append(")");
}
if(isPK){
sql.append(" not null primary key ");
}
if (i == fields.length - 1)
sql.append(" )");
else
sql.append(" ,");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
System.err.println(sql.toString());
return sql.toString();
}
}
JAVA通过实体生成数据库表
4星 · 超过85%的资源 需积分: 42 11 浏览量
2017-06-13
15:49:05
上传
评论
收藏 1.74MB RAR 举报
tangwutian
- 粉丝: 4
- 资源: 2
最新资源
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈