表:
image.png
Model:
image.png
1.查询表中所有的列及注释
SET SESSION group_concat_max_len = 10240; -- 如果表中字段太长显示不全,执行该句。
select GROUP_CONCAT(COLUMN_TYPE,'@!@!',COLUMN_COMMENT,'@!@!',COLUMN_NAME separator '&!&!') from information_schema.COLUMNS
where table_name = 't_pc_chatroom_message' -- @!@!, &!&!自定义分隔符,防止注释部分破坏分割规则
查询结果:
bigint(64) unsigned@!@!主键ID@!@!id&!&!varchar(50)@!@!@!@!message_id&!&!varchar(50)@!@!租户id@!@!tenant_id&!&!varchar(50)@!@!群db_id@!@!wechat_chatroom_id&!&!varchar(50)@!@!微信db_id@!@!wechat_account_id ...
2.代码分割
public static void main(String[] args) {
String str = "bigint(64) unsigned@!@!主键ID@!@!id&!&!varchar(50)@!@!@!@!message_id&!&!varchar(50)@!@!租户id@!@!tenant_id&!&!varchar(50)@!@!群db_id@!@!wechat_chatroom_id&!&!varchar(50)@!@!微信db_id@!@!wechat_account_id";
String[] line = str.split("&!&!");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < line.length; i++) {
String subLine = line[i];
String[] subLineArr = subLine.split("@!@!");
sb.append("/**\n");
sb.append("* " + subLineArr[subLineArr.length-2]+"\n");
sb.append("*/\n");
sb.append("private");
sb.append(" ");
if(subLineArr[0].contains("(")){
sb.append(toSqlToJava(subLineArr[0].substring(0,subLineArr[0].indexOf("("))));
}else{
sb.append(toSqlToJava(subLineArr[0]));
}
sb.append(" ");
String var = subLineArr[subLineArr.length-1];
if(var.contains("_")){
var = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, var);
}
sb.append(var);
sb.append(";");
sb.append("\n");
}
System.out.println(sb);
}
//百度找的工具
public static String toSqlToJava(String sqlType) {
if( sqlType == null || sqlType.trim().length() == 0 ) return sqlType;
sqlType = sqlType.toLowerCase();
switch(sqlType){
case "nvarchar":return "String";
case "char":return "String";
case "varchar":return "String";
case "text":return "String";
case "longtext":return "String";
case "nchar":return "String";
case "blob":return "byte[]";
case "integer":return "Long";
case "tinyint":return "Integer";
case "smallint":return "Integer";
case "mediumint":return "Integer";
case "bit":return "Boolean";
case "bigint":return "Long";
case "float":return "Fload";
case "double":return "Double";
case "decimal":return "BigDecimal";
case "boolean":return "Boolean";
case "id":return "Long";
case "date":return "LocalDate";
case "datetime":return "LocalDateTime";
case "year":return "Date";
case "time":return "java.sql.Time";
case "timestamp":return "Date";
case "numeric":return "BigDecimal";
case "real":return "BigDecimal";
case "money":return "Double";
case "smallmoney":return "Double";
case "image":return "byte[]";
case "mediumtext":return "String";
case "json":return "String";
case "int":return "Integer";
default:
System.out.println("-----------------》转化失败:未发现的类型"+sqlType);
break;
}
return sqlType;
}
3.带下划线字段转驼峰使用guava。
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
Over.
网友评论