Browse Source

fix(kotlin): 修复动态表名 BUG,最大努力替换表名

825944942@qq.com 5 years ago
parent
commit
3579ce7c20

+ 3 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/parsers/ITableNameHandler.java

@@ -36,7 +36,9 @@ public interface ITableNameHandler {
     default String process(MetaObject metaObject, String sql, String tableName) {
         String dynamicTableName = dynamicTableName(metaObject, sql, tableName);
         if (null != dynamicTableName && !dynamicTableName.equalsIgnoreCase(tableName)) {
-            return sql.replaceAll(tableName, dynamicTableName);
+            // 直接替换字符串对于 SQL 操作是不那么好做,这里修复只能尽可能的保证处理没问题
+            String regex = "(?<=\\s)\\Q" + tableName + "\\E(?=\\s)";
+            return sql.replaceAll(regex, dynamicTableName);
         }
         return sql;
     }