Druid SQL Parser提供了格式化代码的工具类。这个是基于语义分析做的SQL格式化功能,比其他的SQL格式化做的更智能,效果更好。

格式化的工具类API

  1. package com.alibaba.druid.sql;
  2.  
  3. public class SQLUtils {
  4. String format(String sq, String dbType);
  5. String format(String sq, String dbType, FormatOption option);
  6. }
  • 其中dbType支持mysql/postgresql/odps/oracle/db2/sqlserver
  • option缺省有SQLUtils.DEFAULT_FORMAT_OPTION(大写)、SQLUtils.DEFAULT_LCASE_FORMAT_OPTION(小写)两种可以选择,也可按需要定制化。

MySQL 格式化

  1. import com.alibaba.druid.sql.SQLUtils;
  2. import com.alibaba.druid.util.JdbcConstants;
  3.  
  4. String sql = "update t set name = 'x' where id < 100 limit 10";
  5. String result = SQLUtils.format(sql, JdbcConstants.MYSQL);
  6. System.out.println(result); // 缺省大写格式
  7.  
  8. String result_lcase = SQLUtils.format(sql
  9. , JdbcConstants.MYSQL
  10. , SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
  11. System.out.println(result_lcase); // 小写格式

输出格式化后的结果:

  1. -- 这是缺省的大写格式
  2. UPDATE t
  3. SET name = 'x'
  4. WHERE id < 100
  5. LIMIT 10
  6.  
  7. -- 这是小写格式
  8. update t
  9. set name = 'x'
  10. where id < 100
  11. limit 10