跟mybatis代码的时候,偶然发现的一款特殊字符处理工具java.lang.StringTokenizer。平常,我们看到的mybatis mapper.xml里面各种换行各种缩进,但日志文件里面的sql都是整整齐齐的。没有换行符,缩进等。就是利用该工具做的格式化处理。该工具能很好的去掉文件里面的/n/r,tab符,空格等。将字符串分成一小段一小段的,然后再拼接起来。
大致原理如下示例,把sql脚本里面带换行格式的sql读出来。用 ; 分成一个sql集合,然后再用一个空格连起来。
public void styleSql(String sql){
StringTokenizer stringTokenizer = new StringTokenizer(sql);
List<String> sqlItems = new ArrayList<>();
while (stringTokenizer.hasMoreTokens()) {
String item = stringTokenizer.nextToken();
sqlItems.add(item);
}
String finalSql = joinSQL(sqlItems, " ");
...
下面是一个常用的应用场景,如下,读sql关键字。读到代码中后,使用StringTokenizer工具能将文件按行处理成一个关键字集合。使用方法与上面示列类似。