mysql生成数据字段_mysql数据库字段生成

来源:Redkale demo

1.[文件] ClassCreator.java ~ 5KB     下载(1)

/*

* To change this license header, choose License Headers in Project Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/

package org.redkale.util;

import static java.lang.Character.toUpperCase;

import java.sql.*;

import java.util.*;

/**

*

* @author zhangjx

*/

public class ClassCreator {

public static void main(String[] args) throws Exception {

create("org.om.model", "users");

}

private static void create(String pkg, String tablename) throws Exception {

com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource source = new com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource();

source.setUrl("jdbc:mysql://localhost:3306/om?autoReconnect=true&characterEncoding=utf8"); //数据库url

source.setUser("root"); //数据库账号

source.setPassword("admin"); //数据库密码

Connection conn = source.getConnection();

DatabaseMetaData meta = conn.getMetaData();

ResultSet rs = meta.getColumns(null, "%", tablename, null);

// ResultSetMetaData rsd = rs.getMetaData();

// for(int i =1 ; i<=rsd.getColumnCount();i++) {

// System.out.println(rsd.getColumnName(i));

// }

StringBuilder sb = new StringBuilder();

sb.append("package " + pkg + ";" + "\r\n\r\n");

sb.append("import org.redkale.util.*;\r\n");

sb.append("import javax.persistence.*;\r\n");

sb.append("import org.redkale.convert.*;\r\n");

sb.append("import " + pkg.substring(0, pkg.lastIndexOf('.')) + ".base.BaseEntity;\r\n");

char[] chs = tablename.toCharArray();

chs[0] = toUpperCase(chs[0]);

String classname = new String(chs).replace("info", "Info").replace("record", "Record").replaceAll("his$", "His");

sb.append("\r\n/**\r\n"

+ " *\r\n"

+ " * @author " + System.getProperty("user.name") + "\r\n"

+ " */\r\n");

if (classname.contains("Info")) sb.append("@Cacheable\r\n");

sb.append("public class " + classname + " extends BaseEntity {\r\n");

boolean idable = false;

List list = new ArrayList<>();

while (rs.next()) {

boolean incre = rs.getBoolean("IS_AUTOINCREMENT");

String column = rs.getString("COLUMN_NAME");

String type = rs.getString("TYPE_NAME");

String remark = rs.getString("REMARKS");

sb.append("\r\n");

if (!idable) {

idable = true;

sb.append(" @Id\r\n");

if (incre) sb.append(" @GeneratedValue\r\n");

}

if ("createtime".equals(column)) sb.append(" @Column(updatable = false)\r\n");

String ctype = "NULL";

if ("INT".equalsIgnoreCase(type)) {

ctype = "int";

}else if("INT UNSIGNED".equalsIgnoreCase(type)){

ctype = "int";

} else if ("BIGINT".equalsIgnoreCase(type)) {

ctype = "long";

} else if ("SMALLINT".equalsIgnoreCase(type)) {

ctype = "short";

} else if ("FLOAT".equalsIgnoreCase(type)) {

ctype = "float";

} else if ("DECIMAL".equalsIgnoreCase(type)) {

ctype = "float";

} else if ("VARCHAR".equalsIgnoreCase(type)) {

ctype = "String";

} else if (type.contains("TEXT")) {

ctype = "String";

} else if (type.contains("BLOB")) {

ctype = "byte[]";

}

sb.append(" private " + ctype + " " + column);

if ("String".equals(ctype)) sb.append(" = \"\"");

sb.append("; //" + remark + "\r\n");

char[] chs2 = column.toCharArray();

chs2[0] = toUpperCase(chs2[0]);

String sgname = new String(chs2);

StringBuilder setter = new StringBuilder();

setter.append("\r\n public void set" + sgname + "(" + ctype + " " + column + ") {\r\n");

setter.append(" this." + column + " = " + column + ";\r\n");

setter.append(" }\r\n");

list.add(setter);

StringBuilder getter = new StringBuilder();

getter.append("\r\n public " + ctype + " get" + sgname + "() {\r\n");

getter.append(" return this." + column + ";\r\n");

getter.append(" }\r\n");

list.add(getter);

}

for (StringBuilder item : list) {

sb.append(item);

}

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

System.out.println(sb);

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值