Druid SQL Parser提供了格式化代码的工具类。这个是基于语义分析做的SQL格式化功能,比其他的SQL格式化做的更智能,效果更好。
格式化的工具类API
package com.alibaba.druid.sql; public class SQLUtils { String format(String sq, String dbType); String format(String sq, String dbType, FormatOption option); }
- 其中dbType支持mysql/postgresql/odps/oracle/db2/sqlserver
- option缺省有SQLUtils.DEFAULT_FORMAT_OPTION(大写)、SQLUtils.DEFAULT_LCASE_FORMAT_OPTION(小写)两种可以选择,也可按需要定制化。
MySQL 格式化示例
import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.util.JdbcConstants; /** * @author Ray * @date 2018/6/5 0005 */ public class FormatTest { public static void main(String[] args) { String sql = "update student set name = 'R' where id < 100 limit 10"; String result = SQLUtils.format(sql,JdbcConstants.MYSQL); System.out.println("-- 这是缺省的大写格式"); System.out.println(result); // 缺省大写格式 System.out.println("-- 这是小写格式"); String result_lcase = SQLUtils.format(sql, JdbcConstants.MYSQL, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION); System.out.println(result_lcase); // 小写格式 } }
输出格式化后的结果:
-- 这是缺省的大写格式 UPDATE student SET name = 'R' WHERE id < 100 LIMIT 10 -- 这是小写格式 update student set name = 'R' where id < 100 limit 10