Browse Source

新增全局表名格式化支持

hubin 1 year ago
parent
commit
aa450e22c2

+ 9 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/config/GlobalConfig.java

@@ -120,6 +120,15 @@ public class GlobalConfig implements Serializable {
          * @since 3.1.1
          */
         private String columnFormat;
+        /**
+         * db 表 format
+         * <p>
+         * 例: `%s`
+         * <p>
+         *
+         * @since 3.5.3.2
+         */
+        private String tableFormat;
         /**
          * entity 的字段(property)的 format,只有在 column as property 这种情况下生效
          * <p>

+ 9 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableInfoHelper.java

@@ -251,10 +251,19 @@ public class TableInfoHelper {
             tableName = initTableNameWithDbConfig(tableName, dbConfig);
         }
 
+        // 表追加前缀
         String targetTableName = tableName;
         if (StringUtils.isNotBlank(tablePrefix) && tablePrefixEffect) {
             targetTableName = tablePrefix + targetTableName;
         }
+
+        // 表格式化
+        String tableFormat = dbConfig.getTableFormat();
+        if (StringUtils.isNotBlank(tableFormat)) {
+            targetTableName = String.format(tableFormat, targetTableName);
+        }
+
+        // 表追加 schema 信息
         if (StringUtils.isNotBlank(schema)) {
             targetTableName = schema + StringPool.DOT + targetTableName;
         }

+ 4 - 1
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/test/metadata/TableInfoHelperTest.java

@@ -145,13 +145,16 @@ class TableInfoHelperTest {
     void testColumnFormat() {
         MybatisConfiguration configuration = new MybatisConfiguration();
         GlobalConfig config = GlobalConfigUtils.defaults();
-        config.getDbConfig().setColumnFormat("pxx_%s");
+        GlobalConfig.DbConfig dbConfig = config.getDbConfig();
+        dbConfig.setColumnFormat("pxx_%s");
+        dbConfig.setTableFormat("mp_%s");
         GlobalConfigUtils.setGlobalConfig(configuration, config);
         TableInfo tableInfo = TableInfoHelper.initTableInfo(new MapperBuilderAssistant(configuration, ""), Logic.class);
         List<TableFieldInfo> fieldList = tableInfo.getFieldList();
         fieldList.forEach(i -> {
             assertThat(i.getColumn()).startsWith("pxx_");
         });
+        assertThat(tableInfo.getTableName()).startsWith("mp_");
     }
 
     @Data