在druid-1.2.17版本中,新增加一个功能TableMapping,用于修改SQL中的表名。

接口定义

  1. package com.alibaba.druid.sql;
  2.  
  3. public class SQLUtils {
  4. public static String refactor(String sql, String dbType, Map<String, String> tableMapping);
  5. }

参数解析

  • sql 需要修改的SQL
  • dbType 数据库类型,在JdbcConstants中定义有各种数据库类型的常量,比如mysql/oracle/db2/sqlserver/odps等
  • tableMapping 需要映射的表名
  • 返回值 映射修改后的SQL

使用示例

  1. import com.alibaba.druid.sql.SQLUtils;
  2.  
  3. Map<String, String> mapping = Collections.singletonMap("user", "user_01");
  4.  
  5. String sql = "select * from user";
  6. String result = SQLUtils.refactor(sql, JdbcConstants.MYSQL, mapping);
  7. assertEquals("SELECT *\n" +
  8. "FROM user_01", result);