在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 < keyword.length(); i++) { char key = keyword.charAt(i); if (Character.isUpperCase(key)) { String keyStr = key + ""; keyword = keyword.replace(keyStr, "_" + keyStr.toLowerCase()); } } } return keyword; }