写的实体类太多字段的,而且还是驼峰法的命名,手动修改驼峰法加"_",人会傻的。
/**
* 驼峰式的实体类属性名转换为数据表字段名
* @param camelCaseStr 驼峰式的实体类属性名
* @return 转换后的以"_"分隔的数据表字段名
*/
public static String decamelize(String camelCaseStr){
return isBlank(camelCaseStr) ? camelCaseStr : camelCaseStr.replaceAll("[A-Z]", "_$0").toLowerCase();
}
/**
* 字符串是否为空
* @param cs 待检查的字符串
* @return 空:true; 非空:false
*/
public static boolean isBlank(final CharSequence cs) {
int strLen;
if (cs == null || (strLen = cs.length()) == 0) {
return true;
}
for (int i = 0; i < strLen; i++) {
if (!Character.isWhitespace(cs.charAt(i))) {
return false;
}
}
return true;
}
public static void main(String[] args) {
Class c = ABC.class;
List<Field> fields = new ArrayList<>();
while (c != null){
fields.addAll(Arrays.asList(c.getDeclaredFields()));
c = c.getSuperclass();
}
for (Field str : fields){
System.out.println("ALTER TABLE bbbb ADD " + decamelize(str.getName()) +" varchar(50);");
}
}