mysql javabean 工具_MYSQL 表转 JavaBean 工具类

importorg.apache.commons.lang.StringUtils;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSetMetaData;importjava.sql.SQLException;import java.util.*;public classDBTableToJavaBeanUtil {public staticConnection connection;//mysql DB连接字符串

private static String DB_URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&noDatetimeStringSync=true&serverTimezone=UTC";private static String DB_USER = "root"; //账号

private static String DB_PASSWD = "root"; //密码//mysql 驱动全限定名称

public static String DB_DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver";static{try{

Class.forName(DB_DRIVER_CLASS_NAME);if (connection == null ||connection.isClosed())//获得链接

connection =DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWD);

}catch(ClassNotFoundException ex) {

ex.printStackTrace();

System.out.println(ex.getMessage());

}catch(SQLException e) {

e.printStackTrace();

System.out.println(e.getMessage());

}

}publicDBTableToJavaBeanUtil(){

}/*** 表元数据

*@paramtable

*@return

*/

public static MapgetDBTableMeta(String table){

Map colAndTypes = newHashMap();

String sql= "select * from " +table;try{

PreparedStatement statement=connection.prepareStatement(sql);//表 元数据

ResultSetMetaData metadata =statement.getMetaData();//表 列

int len =metadata.getColumnCount();for(int i= 1;i<= len; i++){

colAndTypes.put(metadata.getColumnName(i), sqlType2JavaType(metadata.getColumnTypeName(i)));

}

}catch(SQLException e) {

e.printStackTrace();

}returncolAndTypes;

}/*** sql type <=> java type

*@paramsqlType

*@return

*/

public staticString sqlType2JavaType(String sqlType) {switch(sqlType.toLowerCase()){case "bit": return "boolean";case "tinyint": return "byte";case "smallint": return "short";case "int": return "int";case "bigint": return "long";case "float": return "float";case "decimal":case "numeric":case "real":case "money":case "smallmoney": return "double";case "varchar":case "char":case "nvarchar":case "nchar":case "text": return "String";case "datetime":case "date": return "Date";case "image": return "Blob";case "timestamp": return "Timestamp";default: return "String";

}

}/*** table 2 class

*@paramtable 表名称

*@parampath 保存类文件路径*/

public staticString tableToClass(String table, String path, String pack){

Map colAndTypes =getDBTableMeta(table);//类字符串

StringBuilder classStr = newStringBuilder();if(colAndTypes.size() == 0) return "";if(!isEmpty(pack)){

classStr.append("package " + pack + ";");

}

classStr.append(genImport(colAndTypes.values()));//驼峰bean名称

classStr.append("public class " + dealName(table, 1) + " {\r\n");//类字段

for (Map.Entryentry : colAndTypes.entrySet()) {

classStr.append(genFieldStr(entry.getKey(), entry.getValue()));

}//get,Set

for (Map.Entryentry : colAndTypes.entrySet()) {

classStr.append(genGetMethodStr(entry.getKey(), entry.getValue()));

classStr.append(genSetMethodStr(entry.getKey(), entry.getValue()));

}

classStr.append("}\r\n");//保存

path = isEmpty(path)?"":path;

File file= new File(path + dealName(table, 1) + ".java");try(BufferedWriter write = new BufferedWriter(newFileWriter(file))) {

write.write(classStr.toString());

write.close();

}catch(IOException e) {

e.printStackTrace();

}returnclassStr.toString();

}public static String genImport(Collectiontypes){

StringBuilder sb= newStringBuilder();if(types.contains("Date")){

sb.append("import java.util.Date;\r\n");

}if(types.contains("Blob")){

sb.append("import java.sql.Blob;\r\n");

}if(types.contains("Timestamp")){

sb.append("import java.sql.Timestamp;\r\n");

}returnsb.toString();

}/*** 属性构造

*@paramname

*@paramtype

*@return

*/

public staticString genFieldStr(String name, String type) {if(isEmpty(name) ||isEmpty(type)) {return "";

}return String.format(" private %s %s;\n\r", new String[]{type, dealName(name, 0)});

}public static booleanisEmpty(String str){if(str == null || str == "") return true;return false;

}/*** get method construct

*@paramname

*@paramtype

*@return

*/

private staticString genGetMethodStr(String name, String type) {if(isEmpty(name) ||isEmpty(type)) {return "";

}

StringBuilder sb= newStringBuilder();

sb.append(String.format(" public %s get%s(){\n\r", type, dealName(name, 1)));

sb.append(String.format(" return this.%s;\r\n", dealName(name, 0)));

sb.append(" }\r\n");returnsb.toString();

}/*** 驼峰名称处理

*@paramname

*@paramtype

*@return

*/

public static String dealName(String name, inttype) {

String[] names= StringUtils.split(StringUtils.trim(name), "_");if(names.length > 0){

StringBuilder sb= newStringBuilder();for(String s : names) {

sb.append(StringUtils.upperCase(StringUtils.substring(s,0, 1)));

sb.append(StringUtils.lowerCase(StringUtils.substring(s,1)));

}if(type == 0){

sb.replace(0, 1, StringUtils.lowerCase(sb.substring(0, 1)));

}returnsb.toString();

}return "";

}/*** set method contruct

*@paramname

*@paramtype

*@return

*/

public staticString genSetMethodStr(String name, String type) {if(isEmpty(name) ||isEmpty(type)) {return "";

}

String fieldName= dealName(name, 0);

StringBuilder sb= newStringBuilder();

sb.append(String.format(" public void set%s(%s %s){\n\r", dealName(name, 1), type, fieldName));

sb.append(String.format(" this.%s = %s;\r\n", fieldName, fieldName));

sb.append(" }\r\n");returnsb.toString();

}public static voidclose(){try{

connection.close();

}catch(SQLException e) {

e.printStackTrace();

}

}public static voidmain(String[] args) {

System.out.println(DBTableToJavaBeanUtil.tableToClass("book", "d:\\", null));

close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值