在JFinal4.9中,已官方支持了将下划线形式的字段名转驼峰形式,而业内在对mysql数据库的字段命名上,一般也是用下划线形式。我此前的大部分jfinal项目里的数据库字段名都是驼峰形式的,为了更符合规范,想将字段名都变成下划线形式的。但是一一去改确实太麻烦,所以写了段代码,可以一键将通过工具(如:Navicat)自动导出的sql文件里的字段名从驼峰形式转下划线形式,如userId可转成user_id等。现将代码分享给大家,如有需要可借鉴:public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader(PathKit.getWebRootPath() + "\\src\\main\\resources\\yoursql.sql"));
String sqlStr = br.lines().collect(Collectors.joining("\n"));
Matcher matcher = Pattern.compile("`([\\w]*)`").matcher(sqlStr);
StringBuilder sb = new StringBuilder();
while (matcher.find()) {
matcher.appendReplacement(sb, doConvert(matcher.group(0)));
}
matcher.appendTail(sb);
System.out.println(sb.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private static String doConvert(String keyword) {
if (keyword.matches("[\\S]*[A-Z][\\S]*")) {
for (int i = 0; i
char key = keyword.charAt(i);
if (Character.isUpperCase(key)) {
String keyStr = key + "";
keyword = keyword.replace(keyStr, "_" + keyStr.toLowerCase());
}
}
}
return keyword;
}