一个大表的属性列是很多的,如何通过属性的字段生成相应的类名字段,有时候是有这种小需求的,例如 “old_data_id”这个列,在类中的属性应该为“oldDataId”,在自定义的SQL语句中,就需要自己去写这种AS转换。这里写了段小代码,做一个记录:
@Test
public void testTestMake() {
String begin = "`id` varchar(32) NOT NULL COMMENT '序列号',\n" +
"`createtime` timestamp NULL DEFAULT NULL COMMENT '创建时间',\n" +
"`user_id` varchar(255) NOT NULL COMMENT '用户id',\n" +
" `gender` varchar(1) DEFAULT NULL COMMENT '性别',\n" +
" `household_type` varchar(20) DEFAULT NULL COMMENT '户籍类型',\n" +
" `marriage` varchar(20) DEFAULT NULL COMMENT '婚姻',\n" +
" `level_education` varchar(20) DEFAULT NULL COMMENT '文化程度',\n" +
" `political_landscape` varchar(20) DEFAULT NULL COMMENT '政治面貌',\n" +
" `email` varchar(50) DEFAULT NULL COMMENT '邮箱',\n" +
" `nationality` varchar(20) DEFAULT NULL COMMENT '国籍',\n" +
" `year_birth` int(4) DEFAULT NULL COMMENT '出生年',\n" +
" `month` int(2) DEFAULT NULL COMMENT '月份',\n" +
" `date` int(2) DEFAULT NULL COMMENT '日期',\n" +
" `height` varchar(6) DEFAULT NULL COMMENT '身高',\n" +
" `weight` varchar(5) DEFAULT NULL COMMENT '体重',\n" +
" `blood_type` varchar(20) DEFAULT NULL COMMENT '血型',\n" +
" `hour` int(2) DEFAULT NULL COMMENT '时间',\n" +
" `minute` int(2) DEFAULT NULL COMMENT '分钟',\n" +
" `constellation` varchar(6) DEFAULT NULL COMMENT '星座',\n" +
" `illegal_record` varchar(20) DEFAULT NULL COMMENT '违法记录',\n" +
" `update_operation` varchar(50) DEFAULT NULL COMMENT '修改人id_name',\n" +
" `old_data_id` varchar(32) DEFAULT NULL COMMENT '旧数据id',\n" +
" `updatetime` timestamp NULL DEFAULT NULL COMMENT '修改时间',";
//首先拆分列属性字段为数组,每一列为一个数组
String[] strList = begin.split(",");
//创建一个列名数组
String[] listString = new String[strList.length];
for(int run=0;run<strList.length;run++){
String newString = strList[run];
newString = newString.substring(0,newString.indexOf("` "));
newString = newString.replace(" ","");
newString = newString.replace("`","");
newString = newString.replace("\n","");
listString[run] = newString;
}
//将组装好的列名数组进行拆分替换
String[] list = listString;
//声明最终SQL的AS语句
StringBuffer sqlStr = new StringBuffer();
for(int run=0;run<list.length;run++){
//添加当前查询的假表名
sqlStr.append("e.");
//添加列名
sqlStr.append(list[run]);
sqlStr.append(" AS ");
//通过列名构建骆驼命名法的属性名
String newName = list[run];
while (newName.lastIndexOf("_")>0){
int number = newName.lastIndexOf("_")+1;
String old_str = newName.substring(number,number+1);
String new_str = old_str.toUpperCase();
newName = newName.replace("_"+old_str,new_str);
}
//将构建好的属性名添加到查询SQL中
sqlStr.append(newName);
sqlStr.append(",");
}
//去除最后一个逗号
sqlStr.delete(sqlStr.length()-1,sqlStr.length());
//输出SQL结果
System.out.println("END : ");
System.out.println(sqlStr);
}
当前代码运行如下