由数据库表生成jpa实体工具
- package cn.net.yto.aaa.dao.generator;
- /**
- * 由数据库表生成jpa实体工具
- *
- * @author huike
- * Created by gf.liu on 2017/5/25.
- */
- public class GenEntityMysql {
- private static final String URL = "jdbc:mysql://127.0.0.1:3306/yto_test?useUnicode=true&characterEncoding=utf8";
- private static final String NAME = "root";
- private static final String PASS = "root";
- /**
- * //指定实体生成所在包的路径
- */
- private String entityPackage = "cn.net.yto.aaa.dao.entities";
- /**
- * 指定实体仓库接口生成所在包的路径
- */
- private String repositoryPackage = "cn.net.yto.aaa.dao.repositories";
- /**
- * 作者名字
- */
- private String authorName = "huike";
- /**
- * 根据表明创建entity实例类,每次一个
- */
- private String tableName = "tb_stu_cou_stu";
- /**
- * 列名数组
- */
- private List<String> colNames = new ArrayList<>();
- /**
- * 列名类型数组
- */
- private List<String> colTypes = new ArrayList<>();
- /**
- * 列名大小数组
- */
- private List<Integer> colSizes = new ArrayList<>();
- /**
- * //列补充说明
- */
- private List<String> colExtras = new ArrayList<>();
- /**
- * 列注释
- */
- private List<String> colComment = new ArrayList<>();
- private List<String> colNulls = new ArrayList<>();
- /**
- * 是否需要导入包java.util.*
- */
- private boolean f_util = false;
- /**
- * 是否需要导入包java.sql.*
- */
- private boolean f_sql = false;
- /**
- * 是否需要导入包java.math.BigDecimal
- */
- private boolean f_bigDecimal = false;
- private static final String DRIVER = "com.mysql.jdbc.Driver";
- private static final String AUTO = "auto_increment";
- private static final String NO = "NO";
- /*
- * 构造函数
- */
- public GenEntityMysql() {
- }
- /**
- *
- */
- public static void main(String[] args) {
- // GenEntityMysql genEntityMysql = new GenEntityMysql();
- // genEntityMysql.generateEntry();
- }
- /**
- * 功能:生成实体类主体代码
- *
- * @return
- */
- private String parseEntity() {
- StringBuffer sb = new StringBuffer();
- sb.append("package " + this.entityPackage + ";\r\n\r\n");
- sb.append("import javax.persistence.Entity;" + "\r\n");
- sb.append("import javax.persistence.Table;" + "\r\n");
- sb.append("import javax.persistence.Column;" + "\r\n");
- sb.append("import javax.persistence.Id;" + "\r\n");
- sb.append("import javax.persistence.GeneratedValue;" + "\r\n");
- sb.append("import javax.persistence.GenerationType;" + "\r\n");
- sb.append("import java.io.Serializable;" + "\r\n");
- //判断是否导入工具包
- if (f_util) {
- sb.append("import java.util.Date;\r\n");
- }
- if (f_sql) {
- sb.append("import java.sql.*;\r\n");
- }
- if (f_bigDecimal) {
- sb.append("import java.math.BigDecimal;\r\n");
- }
- sb.append("\r\n");
- //注释部分
- sb.append(" /**\r\n");
- sb.append(" * " + tableName + " 实体类\r\n");
- sb.append(" * Created by " + this.authorName + "\r\n");
- sb.append(" * " + new Date() + "\r\n");
- sb.append(" */ \r\n");
- //实体部分
- sb.append("@Entity " + "\r\n");
- sb.append("@Table(name = \"" + tableName + "\")" + "\r\n");
- sb.append("public class " + this.allInitialCapital(tableName) + " implements Serializable{\r\n");
- processAllAttrs(sb);//属性
- processAllMethod(sb);//get set方法
- sb.append("}\r\n");
- return sb.toString();
- }
- /**
- * 功能:生成repository代码
- *
- * @return
- */
- private String parseRepository() {
- StringBuffer sb = new StringBuffer();
- sb.append("package " + this.repositoryPackage + ";\r\n\r\n");
- sb.append("import cn.net.yto.base.dao.BaseRepository;" + "\r\n");
- sb.append("import org.springframework.stereotype.Repository;" + "\r\n");
- sb.append("import " + this.entityPackage + "." + this.allInitialCapital(tableName) + ";" + "\r\n");
- sb.append("\r\n");
- //注释部分
- sb.append(" /**\r\n");
- sb.append(" * " + tableName + " Repository\r\n");
- sb.append(" * Created by " + this.authorName + "\r\n");
- sb.append(" * " + new Date() + "\r\n");
- sb.append(" */ \r\n");
- //实体部分
- sb.append("@Repository " + "\r\n");
- sb.append("public interface " + this.allInitialCapital(tableName) + "Repository extends BaseRepository<" + this.allInitialCapital(tableName) + ", Integer> {\r\n");
- sb.append("}\r\n");
- return sb.toString();
- }
- /**
- * 功能:生成所有属性
- *
- * @param sb
- */
- private void processAllAttrs(StringBuffer sb) {
- for (int i = 0; i < colNames.size(); i++) {
- //注释部分
- sb.append(" /**\r\n");
- sb.append(" * " + colComment.get(i) + " \r\n");
- sb.append(" */ \r\n");
- if (AUTO.equalsIgnoreCase(colExtras.get(i))) {
- sb.append("\t@Id" + "\r\n");
- sb.append("\t@GeneratedValue(strategy = GenerationType.IDENTITY)" + "\r\n");
- }
- sb.append("\t@Column(name = \"" + colNames.get(i) + "\"");
- if (NO.equalsIgnoreCase(colNulls.get(i))) {
- sb.append(", nullable = false");
- }
- if (colSizes.get(i) > 0) {
- sb.append(", length = " + colSizes.get(i));
- }
- sb.append(")" + "\r\n");
- sb.append("\tprivate " + sqlType2JavaType(colTypes.get(i)) + " " + this.secInitialCapital(colNames.get(i)) + ";\r\n\r\n");
- }
- }
- /**
- * 功能:生成所有方法
- *
- * @param sb
- */
- private void processAllMethod(StringBuffer sb) {
- for (int i = 0; i < colNames.size(); i++) {
- sb.append("\tpublic " + sqlType2JavaType(colTypes.get(i)) + " get" + this.allInitialCapital(colNames.get(i)) + "(){\r\n");
- sb.append("\t\treturn " + this.secInitialCapital(colNames.get(i)) + ";\r\n");
- sb.append("\t}\r\n");
- sb.append("\tpublic void set" + this.allInitialCapital(colNames.get(i)) + "(" + sqlType2JavaType(colTypes.get(i)) + " " +
- this.secInitialCapital(colNames.get(i)) + "){\r\n");
- sb.append("\tthis." + this.secInitialCapital(colNames.get(i)) + "=" + this.secInitialCapital(colNames.get(i)) + ";\r\n");
- sb.append("\t}\r\n");
- }
- }
- /**
- * 功能:将输入字符串的首字母改成大写
- *
- * @param str
- * @return
- */
- private String initialCapital(String str) {
- char[] ch = str.toCharArray();
- if (ch[0] >= 'a' && ch[0] <= 'z') {
- ch[0] = (char) (ch[0] - 32);
- }
- return new String(ch);
- }
- /**
- * 所有字母转成小写
- *
- * @return
- */
- private String allLowerCase(String str) {
- if (StringUtils.isEmpty(str)) {
- return str;
- }
- return str.toLowerCase();
- }
- /**
- * 分解名称
- *
- * @param str
- * @return
- */
- private String[] splitName(String str) {
- if (StringUtils.isEmpty(str)) {
- return null;
- }
- return str.split("_");
- }
- /**
- * 由数据库表名生成实体类名
- *
- * @param tableName
- * @return
- */
- private String allInitialCapital(String tableName) {
- if (StringUtils.isEmpty(tableName)) {
- return null;
- }
- tableName = this.allLowerCase(tableName);
- String[] tableNameArray = this.splitName(tableName);
- StringBuffer entryName = new StringBuffer();
- for (String part : tableNameArray) {
- entryName.append(this.initialCapital(part));
- }
- return entryName.toString();
- }
- /**
- * 由数据库列名生成实体类属性名
- *
- * @param columnName
- * @return
- */
- private String secInitialCapital(String columnName) {
- if (StringUtils.isEmpty(columnName)) {
- return null;
- }
- columnName = this.allLowerCase(columnName);
- String[] columnNameArray = this.splitName(columnName);
- StringBuffer fieldName = new StringBuffer();
- for (int i = 0; i < columnNameArray.length; i++) {
- String part = columnNameArray[i];
- if (0 == i) {
- fieldName.append(part);
- } else {
- fieldName.append(this.initialCapital(part));
- }
- }
- return fieldName.toString();
- }
- /**
- * 功能:获得列的数据类型
- *
- * @param sqlType
- * @return
- */
- private String sqlType2JavaType(String sqlType) {
- if (sqlType.equalsIgnoreCase("bit")) {
- return "Boolean";
- } else if (sqlType.equalsIgnoreCase("tinyint")) {
- return "Byte";
- } else if (sqlType.equalsIgnoreCase("smallint")) {
- return "Short";
- } else if (sqlType.equalsIgnoreCase("int")) {
- return "Integer";
- } else if (sqlType.equalsIgnoreCase("bigint")) {
- return "Long";
- } else if (sqlType.equalsIgnoreCase("float")) {
- return "Float";
- } else if (sqlType.equalsIgnoreCase("decimal")) {
- return "BigDecimal";
- } else if (sqlType.equalsIgnoreCase("numeric")
- || sqlType.equalsIgnoreCase("real") || sqlType.equalsIgnoreCase("money")
- || sqlType.equalsIgnoreCase("smallmoney")) {
- return "Double";
- } else if (sqlType.equalsIgnoreCase("varchar") || sqlType.equalsIgnoreCase("char")
- || sqlType.equalsIgnoreCase("nvarchar") || sqlType.equalsIgnoreCase("nchar")
- || sqlType.equalsIgnoreCase("text")) {
- return "String";
- } else if (sqlType.equalsIgnoreCase("datetime")) {
- return "Date";
- } else if (sqlType.equalsIgnoreCase("image")) {
- return "Blod";
- }
- return null;
- }
- /**
- * 生成实体
- */
- public void generateEntry() {
- //
- this.getTableAttribute();
- String entityContent = this.parseEntity();
- this.writerEntityToFile(entityContent);
- String repositoryContent = this.parseRepository();
- this.writerRepositoryToFile(repositoryContent);
- }
- /**
- * 写入文件
- *
- * @param content
- */
- private void writerRepositoryToFile(String content) {
- try {
- String absolutePath = this.getClass().getResource("").getPath();
- absolutePath = absolutePath.substring(0, absolutePath.indexOf("target"));
- String outputPath = absolutePath + "src/main/java/" + this.repositoryPackage.replace(".", "/") + "/"
- + this.allInitialCapital(tableName) + "Repository" + ".java";
- System.out.println("Repository路径:" + outputPath);
- FileWriter fw = new FileWriter(outputPath);
- PrintWriter pw = new PrintWriter(fw);
- pw.println(content);
- pw.flush();
- pw.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * 写入文件
- *
- * @param content
- */
- private void writerEntityToFile(String content) {
- try {
- String absolutePath = this.getClass().getResource("").getPath();
- absolutePath = absolutePath.substring(0, absolutePath.indexOf("target"));
- String outputPath = absolutePath + "src/main/java/" + this.entityPackage.replace(".", "/") + "/"
- + allInitialCapital(tableName) + ".java";
- System.out.println("Entity路径:" + outputPath);
- FileWriter fw = new FileWriter(outputPath);
- PrintWriter pw = new PrintWriter(fw);
- pw.println(content);
- pw.flush();
- pw.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * 获取数据库信息
- */
- private void getTableAttribute() {
- //创建连接
- Connection con = null;
- //查要生成实体类的表
- String sql = "show full columns from " + tableName;
- Statement state = null;
- try {
- try {
- Class.forName(DRIVER);
- } catch (ClassNotFoundException e1) {
- e1.printStackTrace();
- }
- con = DriverManager.getConnection(URL, NAME, PASS);
- state = con.createStatement();
- ResultSet rs = state.executeQuery(sql);
- // ResultSetMetaData metaData = rs.getMetaData();
- while (rs.next()) {
- colNames.add(rs.getString("Field"));
- String type = rs.getString("Type");
- String comment = rs.getString("Comment");
- String extra = rs.getString("Extra");
- String colNull = rs.getString("Null");
- int colSize = 0;
- if (type.contains("(")) {
- String colSizeStr = type.substring(type.indexOf("(") + 1, type.indexOf(")"));
- type = type.substring(0, type.indexOf("("));
- try {
- colSize = Integer.valueOf(colSizeStr);
- } catch (NumberFormatException e) {
- }
- }
- colTypes.add(type);
- colSizes.add(colSize);
- colComment.add(comment);
- colExtras.add(extra);
- colNulls.add(colNull);
- if (type.equalsIgnoreCase("datetime")) {
- f_util = true;
- }
- if (type.equalsIgnoreCase("image") || type.equalsIgnoreCase("text")) {
- f_sql = true;
- }
- if (type.equalsIgnoreCase("decimal")) {
- f_bigDecimal = true;
- }
- }
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (null != con) {
- try {
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- package cn.net.yto.aaa.dao.generator;
- import org.apache.commons.lang.StringUtils;
- import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;- /**
* 由数据库表生成jpa实体工具
*
* @author huike
* Created by gf.liu on 2017/5/25.
*/
public class GenEntityMysql {- private static final String URL = "jdbc:mysql://127.0.0.1:3306/yto_test?useUnicode=true&characterEncoding=utf8";
private static final String NAME = "root";
private static final String PASS = "root";- /**
* //指定实体生成所在包的路径
*/
private String entityPackage = "cn.net.yto.aaa.dao.entities";
/**
* 指定实体仓库接口生成所在包的路径
*/
private String repositoryPackage = "cn.net.yto.aaa.dao.repositories";
/**
* 作者名字
*/
private String authorName = "huike";
/**
* 根据表明创建entity实例类,每次一个
*/
private String tableName = "tb_stu_cou_stu";- /**
* 列名数组
*/
private List<String> colNames = new ArrayList<>();
/**
* 列名类型数组
*/
private List<String> colTypes = new ArrayList<>();
/**
* 列名大小数组
*/
private List<Integer> colSizes = new ArrayList<>();
/**
* //列补充说明
*/
private List<String> colExtras = new ArrayList<>();
/**
* 列注释
*/
private List<String> colComment = new ArrayList<>();- private List<String> colNulls = new ArrayList<>();
- /**
* 是否需要导入包java.util.*
*/
private boolean f_util = false;
/**
* 是否需要导入包java.sql.*
*/
private boolean f_sql = false;
/**
* 是否需要导入包java.math.BigDecimal
*/
private boolean f_bigDecimal = false;- private static final String DRIVER = "com.mysql.jdbc.Driver";
- private static final String AUTO = "auto_increment";
- private static final String NO = "NO";
- /*
* 构造函数
*/
public GenEntityMysql() {- }
- /**
*
*/
public static void main(String[] args) {- // GenEntityMysql genEntityMysql = new GenEntityMysql();
// genEntityMysql.generateEntry();- }
- /**
* 功能:生成实体类主体代码
*
* @return
*/
private String parseEntity() {
StringBuffer sb = new StringBuffer();- sb.append("package " + this.entityPackage + ";\r\n\r\n");
sb.append("import javax.persistence.Entity;" + "\r\n");
sb.append("import javax.persistence.Table;" + "\r\n");
sb.append("import javax.persistence.Column;" + "\r\n");
sb.append("import javax.persistence.Id;" + "\r\n");
sb.append("import javax.persistence.GeneratedValue;" + "\r\n");
sb.append("import javax.persistence.GenerationType;" + "\r\n");
sb.append("import java.io.Serializable;" + "\r\n");- //判断是否导入工具包
if (f_util) {
sb.append("import java.util.Date;\r\n");
}
if (f_sql) {
sb.append("import java.sql.*;\r\n");
}
if (f_bigDecimal) {
sb.append("import java.math.BigDecimal;\r\n");
}- sb.append("\r\n");
//注释部分
sb.append(" /**\r\n");
sb.append(" * " + tableName + " 实体类\r\n");
sb.append(" * Created by " + this.authorName + "\r\n");
sb.append(" * " + new Date() + "\r\n");
sb.append(" */ \r\n");
//实体部分
sb.append("@Entity " + "\r\n");
sb.append("@Table(name = \"" + tableName + "\")" + "\r\n");- sb.append("public class " + this.allInitialCapital(tableName) + " implements Serializable{\r\n");
processAllAttrs(sb);//属性
processAllMethod(sb);//get set方法
sb.append("}\r\n");- return sb.toString();
}- /**
* 功能:生成repository代码
*
* @return
*/
private String parseRepository() {
StringBuffer sb = new StringBuffer();- sb.append("package " + this.repositoryPackage + ";\r\n\r\n");
sb.append("import cn.net.yto.base.dao.BaseRepository;" + "\r\n");
sb.append("import org.springframework.stereotype.Repository;" + "\r\n");
sb.append("import " + this.entityPackage + "." + this.allInitialCapital(tableName) + ";" + "\r\n");
sb.append("\r\n");
//注释部分
sb.append(" /**\r\n");
sb.append(" * " + tableName + " Repository\r\n");
sb.append(" * Created by " + this.authorName + "\r\n");
sb.append(" * " + new Date() + "\r\n");
sb.append(" */ \r\n");
//实体部分
sb.append("@Repository " + "\r\n");- sb.append("public interface " + this.allInitialCapital(tableName) + "Repository extends BaseRepository<" + this.allInitialCapital(tableName) + ", Integer> {\r\n");
sb.append("}\r\n");- return sb.toString();
}- /**
* 功能:生成所有属性
*
* @param sb
*/
private void processAllAttrs(StringBuffer sb) {- for (int i = ; i < colNames.size(); i++) {
//注释部分
sb.append(" /**\r\n");
sb.append(" * " + colComment.get(i) + " \r\n");
sb.append(" */ \r\n");
if (AUTO.equalsIgnoreCase(colExtras.get(i))) {
sb.append("\t@Id" + "\r\n");
sb.append("\t@GeneratedValue(strategy = GenerationType.IDENTITY)" + "\r\n");
}
sb.append("\t@Column(name = \"" + colNames.get(i) + "\"");
if (NO.equalsIgnoreCase(colNulls.get(i))) {
sb.append(", nullable = false");
}
if (colSizes.get(i) > ) {
sb.append(", length = " + colSizes.get(i));
}
sb.append(")" + "\r\n");
sb.append("\tprivate " + sqlType2JavaType(colTypes.get(i)) + " " + this.secInitialCapital(colNames.get(i)) + ";\r\n\r\n");
}
}- /**
* 功能:生成所有方法
*
* @param sb
*/
private void processAllMethod(StringBuffer sb) {- for (int i = ; i < colNames.size(); i++) {
sb.append("\tpublic " + sqlType2JavaType(colTypes.get(i)) + " get" + this.allInitialCapital(colNames.get(i)) + "(){\r\n");
sb.append("\t\treturn " + this.secInitialCapital(colNames.get(i)) + ";\r\n");
sb.append("\t}\r\n");
sb.append("\tpublic void set" + this.allInitialCapital(colNames.get(i)) + "(" + sqlType2JavaType(colTypes.get(i)) + " " +
this.secInitialCapital(colNames.get(i)) + "){\r\n");
sb.append("\tthis." + this.secInitialCapital(colNames.get(i)) + "=" + this.secInitialCapital(colNames.get(i)) + ";\r\n");
sb.append("\t}\r\n");
}- }
- /**
* 功能:将输入字符串的首字母改成大写
*
* @param str
* @return
*/
private String initialCapital(String str) {
char[] ch = str.toCharArray();
if (ch[] >= 'a' && ch[] <= 'z') {
ch[] = (char) (ch[] - );
}
return new String(ch);
}- /**
* 所有字母转成小写
*
* @return
*/
private String allLowerCase(String str) {
if (StringUtils.isEmpty(str)) {
return str;
}
return str.toLowerCase();
}- /**
* 分解名称
*
* @param str
* @return
*/
private String[] splitName(String str) {
if (StringUtils.isEmpty(str)) {
return null;
}
return str.split("_");
}- /**
* 由数据库表名生成实体类名
*
* @param tableName
* @return
*/
private String allInitialCapital(String tableName) {
if (StringUtils.isEmpty(tableName)) {
return null;
}
tableName = this.allLowerCase(tableName);
String[] tableNameArray = this.splitName(tableName);
StringBuffer entryName = new StringBuffer();
for (String part : tableNameArray) {
entryName.append(this.initialCapital(part));
}
return entryName.toString();
}- /**
* 由数据库列名生成实体类属性名
*
* @param columnName
* @return
*/
private String secInitialCapital(String columnName) {
if (StringUtils.isEmpty(columnName)) {
return null;
}
columnName = this.allLowerCase(columnName);
String[] columnNameArray = this.splitName(columnName);
StringBuffer fieldName = new StringBuffer();
for (int i = ; i < columnNameArray.length; i++) {
String part = columnNameArray[i];
if (0 == i) {
fieldName.append(part);
} else {
fieldName.append(this.initialCapital(part));
}
}
return fieldName.toString();
}- /**
* 功能:获得列的数据类型
*
* @param sqlType
* @return
*/
private String sqlType2JavaType(String sqlType) {- if (sqlType.equalsIgnoreCase("bit")) {
return "Boolean";
} else if (sqlType.equalsIgnoreCase("tinyint")) {
return "Byte";
} else if (sqlType.equalsIgnoreCase("smallint")) {
return "Short";
} else if (sqlType.equalsIgnoreCase("int")) {
return "Integer";
} else if (sqlType.equalsIgnoreCase("bigint")) {
return "Long";
} else if (sqlType.equalsIgnoreCase("float")) {
return "Float";
} else if (sqlType.equalsIgnoreCase("decimal")) {
return "BigDecimal";
} else if (sqlType.equalsIgnoreCase("numeric")
|| sqlType.equalsIgnoreCase("real") || sqlType.equalsIgnoreCase("money")
|| sqlType.equalsIgnoreCase("smallmoney")) {
return "Double";
} else if (sqlType.equalsIgnoreCase("varchar") || sqlType.equalsIgnoreCase("char")
|| sqlType.equalsIgnoreCase("nvarchar") || sqlType.equalsIgnoreCase("nchar")
|| sqlType.equalsIgnoreCase("text")) {
return "String";
} else if (sqlType.equalsIgnoreCase("datetime")) {
return "Date";
} else if (sqlType.equalsIgnoreCase("image")) {
return "Blod";
}- return null;
}- /**
* 生成实体
*/
public void generateEntry() {
//
this.getTableAttribute();- String entityContent = this.parseEntity();
this.writerEntityToFile(entityContent);
String repositoryContent = this.parseRepository();
this.writerRepositoryToFile(repositoryContent);
}- /**
* 写入文件
*
* @param content
*/
private void writerRepositoryToFile(String content) {
try {
String absolutePath = this.getClass().getResource("").getPath();
absolutePath = absolutePath.substring(, absolutePath.indexOf("target"));
String outputPath = absolutePath + "src/main/java/" + this.repositoryPackage.replace(".", "/") + "/"
+ this.allInitialCapital(tableName) + "Repository" + ".java";
System.out.println("Repository路径:" + outputPath);
FileWriter fw = new FileWriter(outputPath);
PrintWriter pw = new PrintWriter(fw);
pw.println(content);
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}- /**
* 写入文件
*
* @param content
*/
private void writerEntityToFile(String content) {
try {
String absolutePath = this.getClass().getResource("").getPath();
absolutePath = absolutePath.substring(, absolutePath.indexOf("target"));
String outputPath = absolutePath + "src/main/java/" + this.entityPackage.replace(".", "/") + "/"
+ allInitialCapital(tableName) + ".java";
System.out.println("Entity路径:" + outputPath);
FileWriter fw = new FileWriter(outputPath);
PrintWriter pw = new PrintWriter(fw);
pw.println(content);
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}- /**
* 获取数据库信息
*/
private void getTableAttribute() {
//创建连接
Connection con = null;
//查要生成实体类的表
String sql = "show full columns from " + tableName;
Statement state = null;
try {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
con = DriverManager.getConnection(URL, NAME, PASS);
state = con.createStatement();
ResultSet rs = state.executeQuery(sql);
// ResultSetMetaData metaData = rs.getMetaData();- while (rs.next()) {
colNames.add(rs.getString("Field"));
String type = rs.getString("Type");
String comment = rs.getString("Comment");
String extra = rs.getString("Extra");
String colNull = rs.getString("Null");
int colSize = ;
if (type.contains("(")) {
String colSizeStr = type.substring(type.indexOf("(") + , type.indexOf(")"));
type = type.substring(, type.indexOf("("));
try {
colSize = Integer.valueOf(colSizeStr);
} catch (NumberFormatException e) {- }
}- colTypes.add(type);
colSizes.add(colSize);
colComment.add(comment);
colExtras.add(extra);
colNulls.add(colNull);
if (type.equalsIgnoreCase("datetime")) {
f_util = true;
}
if (type.equalsIgnoreCase("image") || type.equalsIgnoreCase("text")) {
f_sql = true;
}
if (type.equalsIgnoreCase("decimal")) {
f_bigDecimal = true;
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (null != con) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}- }
由数据库表生成jpa实体工具的更多相关文章
- JAVA 自动生成对应数据库表的JPA代码工具
http://blog.csdn.net/zheng2008hua/article/details/6274659 关键词:JPA 数据库表代码自动生成,JPA代码生成 自动生成对应数据库表的 ...
- IDEA 根据数据库表 生成 Model实体
首先在 Idea中 配置数据源,测试ok(过程略) idea窗口中左下角是否 有显示Persistence 窗口 如果没有显示就要如下方法 添加显示: File - > Project Str ...
- net core天马行空系列-可用于依赖注入的,数据库表和c#实体类互相转换的接口实现
1.前言 hi,大家好,我是三合.作为一名程序猿,日常开发中,我们在接到需求以后,一般都会先构思一个模型,然后根据模型写实体类,写完实体类后在数据库里建表,接着进行增删改查, 也有第二种情况,就是有些 ...
- myeclipse通过数据表生成jpa或hibernate实体---https://blog.csdn.net/partner4java/article/details/8560289
myeclipse通过数据表生成jpa或hibernate实体-----https://blog.csdn.net/partner4java/article/details/8560289
- symfony 数据库表生成实体、迁移数据库
从数据库表生成实体 1. 由数据库生成模型: php bin/console doctrine:mapping:convert --from-database yml D:\db\ D:\test_b ...
- JDBCUtils,根据当前MySQL数据库下面的表生成java实体类
自己简单写的JDBCUtils,可以根据当前数据库下面的表生成java实体类,代码萌新,请多多包涵. 初始化配置: //驱动程序名//不固定,根据驱动 static String driver = & ...
- SqlServer数据库表生成C# Model实体类SQL语句——补充
在sql语句最前边加上 use[数据库名] 原链接:https://www.cnblogs.com/jhli/p/11552105.html --[SQL骚操作]SqlServer数据库表生成C ...
- GG_Model 类库与数据库表对应建立实体类
3.4.GG_Model 类库与数据库表对应建立实体类 我这里不教大家写代码,直接用TT模板自动生成,省去写代码的麻烦. A. 三个文件MysqlDbhelper.ttinclude .mysqlMa ...
- eclipse从数据库逆向生成Hibernate实体类
做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO.意思是,在项目设计时,要么 ...
随机推荐
- mysql和oracle分页查询
MYSQL分页查询 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实现分 ...
- VMware install MikroTik RouterOS
1 download the vmdk from Mikro Tik official website 2 create a new vmware host with use an exited vm ...
- open-falcon部署v0.2.1版本
环境准备 安装redis yum install redis -y systemctl start redis 安装mysql rpm -ivh http://dev.mysql.com/get/my ...
- raphael参数说明
大纲 :first-child { margin-top: 0px; } .markdown-preview:not([data-use-github-style]) h1, .markdown-pr ...
- ajax错误类型大全
https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html ajax错误类型大全
- buaacoding_2018算法期末上机G题.地铁建设题解
// 标注:本文旨在为博主确立一种题解的基本范式,以避免博主的题解流于AC代码的粘贴.此基本范式为:完整而简洁明了的思路及其推导说明,力图触及问题的本质并衍生对同类问题的思路分析,使得题解具有泛用性, ...
- bzoj2054疯狂的馒头——线段树
中文题面,一排有n个馒头,用刷子把整个连续的区间刷成一种颜色.因为颜色会覆盖掉之前的.所以我们可以用线段树来反着处理.如果这段区间之前刷到过就不要再遍历进去了,因为这次已经被上次刷的颜色给覆盖了.最后 ...
- 最简单获取appPackage和appActivity 的方法
appPackage和appActivity 进行appium自动化测试必须的两个参数,我们所测试的APP项目不同,这两个参数肯定也是不一样的.我们启动的包都是靠这两个参数去驱动的,那么我们怎么可以快 ...
- wireshark基础学习—第四部分wireshark过滤器总结
这两天一直在熟悉wireshark的过滤器语法规则,以前也接触过这个工具,但只是学校老师教的如何去选择一个接口进行抓取,以及如何去分析一个包的数据.可惜当时对此也没有过多深入.对于我当前,并未接触太多 ...
- ubuntu安装nvidia显卡驱动
朋友挖矿,需要给Ubuntu(16.04版本)系统安装nvidia的显卡驱动,请我帮忙.最开始是进行手动安装.无奈的是安装完后进不了图形化界面.今天正好有时间,找了个硬盘装了个Ubuntu进行测试,成 ...