Selaa lähdekoodia

优化文件名生成与包导入.

nieqiurong 4 vuotta sitten
vanhempi
commit
3c360d1756

+ 15 - 56
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java

@@ -85,7 +85,7 @@ public class ConfigBuilder {
     /**
      * 过滤正则
      */
-    private static final Pattern REGX = Pattern.compile("[~!/@#$%^&*()-=+\\\\|[{}];:'\",<.>?]+");
+    private static final Pattern REGX = Pattern.compile("[~!/@#$%^&*()-=+\\\\|{};:'\",<.>?]+");
     /**
      * 表数据查询
      */
@@ -113,48 +113,6 @@ public class ConfigBuilder {
         this.packageInfo.putAll(packageConfig.initPackageInfo());
         this.pathInfo.putAll(Optional.ofNullable(packageConfig.getPathInfo()).orElseGet(() -> this.template.getPathInfo(this.globalConfig, packageInfo)));
         this.tableInfoList.addAll(getTablesInfo());
-        processTable();
-    }
-
-    /**
-     * 处理表对应的类名称
-     */
-    private void processTable() {
-        for (TableInfo tableInfo : tableInfoList) {
-            String entityName = strategyConfig.getNameConvert().entityNameConvert(tableInfo);
-            if (StringUtils.isNotBlank(globalConfig.getEntityName())) {
-                tableInfo.setConvert(true);
-                tableInfo.setEntityName(String.format(globalConfig.getEntityName(), entityName));
-            } else {
-                tableInfo.setEntityName(strategyConfig, entityName);
-            }
-            if (StringUtils.isNotBlank(globalConfig.getMapperName())) {
-                tableInfo.setMapperName(String.format(globalConfig.getMapperName(), entityName));
-            } else {
-                tableInfo.setMapperName(entityName + ConstVal.MAPPER);
-            }
-            if (StringUtils.isNotBlank(globalConfig.getXmlName())) {
-                tableInfo.setXmlName(String.format(globalConfig.getXmlName(), entityName));
-            } else {
-                tableInfo.setXmlName(entityName + ConstVal.MAPPER);
-            }
-            if (StringUtils.isNotBlank(globalConfig.getServiceName())) {
-                tableInfo.setServiceName(String.format(globalConfig.getServiceName(), entityName));
-            } else {
-                tableInfo.setServiceName("I" + entityName + ConstVal.SERVICE);
-            }
-            if (StringUtils.isNotBlank(globalConfig.getServiceImplName())) {
-                tableInfo.setServiceImplName(String.format(globalConfig.getServiceImplName(), entityName));
-            } else {
-                tableInfo.setServiceImplName(entityName + ConstVal.SERVICE_IMPL);
-            }
-            if (StringUtils.isNotBlank(globalConfig.getControllerName())) {
-                tableInfo.setControllerName(String.format(globalConfig.getControllerName(), entityName));
-            } else {
-                tableInfo.setControllerName(entityName + ConstVal.CONTROLLER);
-            }
-            tableInfo.importPackage(strategyConfig, globalConfig);
-        }
     }
 
     /**
@@ -170,12 +128,12 @@ public class ConfigBuilder {
         List<TableInfo> includeTableList = new ArrayList<>();
         List<TableInfo> excludeTableList = new ArrayList<>();
         try {
-            dbQuery.query(dbQuery.tablesSql(), resultSetWrapper -> {
-                String tableName = resultSetWrapper.getStringResult(dbQuery.tableName());
+            dbQuery.query(dbQuery.tablesSql(), result -> {
+                String tableName = result.getStringResult(dbQuery.tableName());
                 if (StringUtils.isNotBlank(tableName)) {
                     TableInfo tableInfo = new TableInfo();
                     tableInfo.setName(tableName);
-                    String tableComment = resultSetWrapper.getTableComment();
+                    String tableComment = result.getTableComment();
                     // 跳过视图
                     if (!(strategyConfig.isSkipView() && "VIEW".equals(tableComment))) {
                         tableInfo.setComment(tableComment);
@@ -232,22 +190,22 @@ public class ConfigBuilder {
             String tableFieldsSql = dbQuery.tableFieldsSql(tableName);
             Set<String> h2PkColumns = new HashSet<>();
             if (DbType.H2 == dbType) {
-                dbQuery.query(String.format(H2Query.PK_QUERY_SQL, tableName), resultWrapper -> {
-                    String primaryKey = resultWrapper.getStringResult(dbQuery.fieldKey());
+                dbQuery.query(String.format(H2Query.PK_QUERY_SQL, tableName), result -> {
+                    String primaryKey = result.getStringResult(dbQuery.fieldKey());
                     if (Boolean.parseBoolean(primaryKey)) {
-                        h2PkColumns.add(resultWrapper.getStringResult(dbQuery.fieldName()));
+                        h2PkColumns.add(result.getStringResult(dbQuery.fieldName()));
                     }
                 });
             }
-            dbQuery.query(tableFieldsSql, resultSetWrapper -> {
+            dbQuery.query(tableFieldsSql, result -> {
                 TableField field = new TableField();
-                String columnName = resultSetWrapper.getStringResult(dbQuery.fieldName());
+                String columnName = result.getStringResult(dbQuery.fieldName());
                 // 避免多重主键设置,目前只取第一个找到ID,并放到list中的索引为0的位置
                 boolean isId;
                 if (DbType.H2 == dbType) {
                     isId = h2PkColumns.contains(columnName);
                 } else {
-                    String key = resultSetWrapper.getStringResult(dbQuery.fieldKey());
+                    String key = result.getStringResult(dbQuery.fieldKey());
                     if (DbType.DB2 == dbType || DbType.SQLITE == dbType) {
                         isId = StringUtils.isNotBlank(key) && "1".equals(key);
                     } else {
@@ -256,7 +214,7 @@ public class ConfigBuilder {
                 }
                 // 处理ID
                 if (isId) {
-                    field.setKeyFlag(true).setKeyIdentityFlag(dbQuery.isKeyIdentity(resultSetWrapper.getResultSet()));
+                    field.setKeyFlag(true).setKeyIdentityFlag(dbQuery.isKeyIdentity(result.getResultSet()));
                     tableInfo.setHavePrimaryKey(true);
                 }
                 String newColumnName = columnName;
@@ -267,11 +225,11 @@ public class ConfigBuilder {
                     newColumnName = keyWordsHandler.formatColumn(columnName);
                 }
                 field.setName(columnName).setColumnName(newColumnName)
-                    .setType(resultSetWrapper.getStringResult(dbQuery.fieldType()))
+                    .setType(result.getStringResult(dbQuery.fieldType()))
                     .setPropertyName(this.strategyConfig, strategyConfig.getNameConvert().propertyNameConvert(field))
                     .setColumnType(dataSourceConfig.getTypeConvert().processTypeConvert(globalConfig, field))
-                    .setComment(resultSetWrapper.getFiledComment())
-                    .setCustomMap(dbQuery.getCustomFields(resultSetWrapper.getResultSet()));
+                    .setComment(result.getFiledComment())
+                    .setCustomMap(dbQuery.getCustomFields(result.getResultSet()));
                 // 填充逻辑判断
                 strategyConfig.getTableFillList().stream()
                     //忽略大写字段问题
@@ -289,6 +247,7 @@ public class ConfigBuilder {
         }
         tableInfo.addFields(fieldList);
         tableInfo.addCommonFields(commonFieldList);
+        tableInfo.processTable(strategyConfig, globalConfig);
     }
 
     /**

+ 45 - 5
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableInfo.java

@@ -21,6 +21,7 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
 import com.baomidou.mybatisplus.annotation.FieldFill;
@@ -30,6 +31,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.Version;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.generator.config.ConstVal;
 import com.baomidou.mybatisplus.generator.config.GlobalConfig;
 import com.baomidou.mybatisplus.generator.config.StrategyConfig;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
@@ -65,6 +68,13 @@ public class TableInfo {
     private final List<TableField> commonFields = new ArrayList<>();
     private String fieldNames;
 
+    /**
+     * @param convert convert
+     * @return this
+     * @see #setConvert(StrategyConfig)
+     * @deprecated 3.4.1
+     */
+    @Deprecated
     public TableInfo setConvert(boolean convert) {
         this.convert = convert;
         return this;
@@ -76,7 +86,7 @@ public class TableInfo {
             this.convert = true;
         } else if (strategyConfig.isCapitalModeNaming(name)) {
             // 包含
-            this.convert = false;
+            this.convert = !entityName.equalsIgnoreCase(name);
         } else {
             // 转换字段
             if (NamingStrategy.underline_to_camel == strategyConfig.getColumnNaming()) {
@@ -95,6 +105,18 @@ public class TableInfo {
         return entityName.substring(0, 1).toLowerCase() + entityName.substring(1);
     }
 
+    /**
+     * @param entityName 实体名称
+     * @return this
+     * @see #setEntityName(StrategyConfig, String)
+     * @deprecated 3.4.1
+     */
+    @Deprecated
+    public TableInfo setEntityName(String entityName) {
+        this.entityName = entityName;
+        return this;
+    }
+
     public TableInfo setEntityName(StrategyConfig strategyConfig, String entityName) {
         this.entityName = entityName;
         this.setConvert(strategyConfig);
@@ -219,7 +241,7 @@ public class TableInfo {
         return this;
     }
 
-    public void importPackage(StrategyConfig strategyConfig, GlobalConfig globalConfig){
+    public void importPackage(StrategyConfig strategyConfig, GlobalConfig globalConfig) {
         boolean importSerializable = true;
         if (StringUtils.isNotBlank(strategyConfig.getSuperEntityClass())) {
             // 自定义父类
@@ -228,7 +250,8 @@ public class TableInfo {
         } else {
             if (globalConfig.isActiveRecord()) {
                 // 无父类开启 AR 模式
-                this.getImportPackages().add(com.baomidou.mybatisplus.extension.activerecord.Model.class.getCanonicalName());
+                this.getImportPackages().add(Model.class.getCanonicalName());
+                importSerializable = false;
             }
         }
         if (importSerializable) {
@@ -260,11 +283,12 @@ public class TableInfo {
                 }
             } else if (field.isConvert()) {
                 // 普通字段
-                importPackages.add(TableField.class.getCanonicalName());
+                importPackages.add(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());
             }
             if (null != field.getFill()) {
                 // 填充字段
-                importPackages.add(TableField.class.getCanonicalName());
+                importPackages.add(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());
+                //TODO 好像default的不用处理也行,这个做优化项目.
                 importPackages.add(FieldFill.class.getCanonicalName());
             }
             String versionFieldName = strategyConfig.getVersionFieldName();
@@ -273,4 +297,20 @@ public class TableInfo {
             }
         });
     }
+
+    public void processTable(StrategyConfig strategyConfig, GlobalConfig globalConfig) {
+        String entityName = strategyConfig.getNameConvert().entityNameConvert(this);
+        this.setEntityName(strategyConfig, this.getFileName(entityName, globalConfig.getEntityName(), () -> entityName));
+        this.mapperName = this.getFileName(entityName, globalConfig.getMapperName(), () -> entityName + ConstVal.MAPPER);
+        this.xmlName = this.getFileName(entityName, globalConfig.getXmlName(), () -> entityName + ConstVal.XML);
+        this.serviceName = this.getFileName(entityName, globalConfig.getServiceName(), () -> "I" + entityName + ConstVal.SERVICE);
+        this.serviceImplName = this.getFileName(entityName, globalConfig.getServiceImplName(), () -> entityName + ConstVal.SERVICE_IMPL);
+        this.controllerName = this.getFileName(entityName, globalConfig.getControllerName(), () -> entityName + ConstVal.CONTROLLER);
+        this.importPackage(strategyConfig, globalConfig);
+    }
+
+
+    public String getFileName(String entityName, String value, Supplier<String> defaultValue) {
+        return StringUtils.isNotBlank(value) ? String.format(value, entityName) : defaultValue.get();
+    }
 }

+ 3 - 2
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/querys/DecoratorDbQuery.java

@@ -37,6 +37,7 @@ import java.util.stream.Collectors;
  * 装饰DbQuery
  *
  * @author nieqiurong 2020/9/17.
+ * @since 3.4.1
  */
 public class DecoratorDbQuery extends AbstractDbQuery {
 
@@ -170,8 +171,8 @@ public class DecoratorDbQuery extends AbstractDbQuery {
     }
 
     public void query(String sql, Consumer<ResultSetWrapper> consumer) throws SQLException {
-        PreparedStatement preparedStatement = connection.prepareStatement(sql);
-        try (ResultSet resultSet = preparedStatement.executeQuery()) {
+        try (PreparedStatement preparedStatement = connection.prepareStatement(sql);
+             ResultSet resultSet = preparedStatement.executeQuery()) {
             while (resultSet.next()) {
                 consumer.accept(new ResultSetWrapper(resultSet, this));
             }

+ 171 - 5
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/config/po/TableInfoTest.java

@@ -1,29 +1,195 @@
 package com.baomidou.mybatisplus.generator.config.po;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+import com.baomidou.mybatisplus.generator.config.INameConvert;
+import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.io.Serializable;
+import java.util.Date;
+
 
 /**
- *
  * @author nieqiurong 2020/9/21.
  */
 public class TableInfoTest {
 
     @Test
-    void getFieldNamesTest(){
+    void getFieldNamesTest() {
         TableInfo tableInfo;
         tableInfo = new TableInfo();
         tableInfo.addFields(new TableField().setColumnName("name"));
-        Assertions.assertEquals(tableInfo.getFieldNames(),"name");
+        Assertions.assertEquals(tableInfo.getFieldNames(), "name");
 
         tableInfo = new TableInfo();
         tableInfo.addFields(new TableField().setColumnName("name"), new TableField().setColumnName("age"));
-        Assertions.assertEquals(tableInfo.getFieldNames(),"name, age");
+        Assertions.assertEquals(tableInfo.getFieldNames(), "name, age");
 
         tableInfo = new TableInfo();
         tableInfo.addFields(new TableField().setColumnName("name"), new TableField().setColumnName("age"), new TableField().setColumnName("phone"));
-        Assertions.assertEquals(tableInfo.getFieldNames(),"name, age, phone");
+        Assertions.assertEquals(tableInfo.getFieldNames(), "name, age, phone");
+    }
+
+    @Test
+    void processTableTest() {
+        TableInfo tableInfo = new TableInfo().setName("user");
+        tableInfo.processTable(new StrategyConfig(), new GlobalConfig());
+        Assertions.assertFalse(tableInfo.isConvert());
+        Assertions.assertEquals("UserMapper", tableInfo.getMapperName());
+        Assertions.assertEquals("UserXml", tableInfo.getXmlName());
+        Assertions.assertEquals("IUserService", tableInfo.getServiceName());
+        Assertions.assertEquals("UserServiceImpl", tableInfo.getServiceImplName());
+        Assertions.assertEquals("UserController", tableInfo.getControllerName());
+
+        tableInfo = new TableInfo().setName("user");
+        tableInfo.processTable(new StrategyConfig(), new GlobalConfig().setEntityName("%sEntity")
+            .setXmlName("%sXml").setMapperName("%sDao").setControllerName("%sAction").setServiceName("%sService").setServiceImplName("%sServiceImp"));
+        Assertions.assertTrue(tableInfo.isConvert());
+        Assertions.assertEquals("UserEntity", tableInfo.getEntityName());
+        Assertions.assertEquals("UserDao", tableInfo.getMapperName());
+        Assertions.assertEquals("UserXml", tableInfo.getXmlName());
+        Assertions.assertEquals("UserService", tableInfo.getServiceName());
+        Assertions.assertEquals("UserServiceImp", tableInfo.getServiceImplName());
+        Assertions.assertEquals("UserAction", tableInfo.getControllerName());
+
+        tableInfo = new TableInfo().setName("user");
+        tableInfo.processTable(new StrategyConfig().setNameConvert(new INameConvert() {
+            @Override
+            public String entityNameConvert(TableInfo tableInfo) {
+                return "E" + tableInfo.getName();
+            }
+
+            @Override
+            public String propertyNameConvert(TableField field) {
+                return field.getName();
+            }
+        }), new GlobalConfig());
+        Assertions.assertTrue(tableInfo.isConvert());
+        Assertions.assertEquals("Euser", tableInfo.getEntityName());
+    }
+
+    @Test
+    void importPackageTest() {
+        TableInfo tableInfo;
+        StrategyConfig strategyConfig;
+
+        tableInfo = new TableInfo().setName("user");
+        tableInfo.importPackage(new StrategyConfig(), new GlobalConfig());
+        Assertions.assertEquals(1, tableInfo.getImportPackages().size());
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+
+        tableInfo = new TableInfo().setName("user").setConvert(true);
+        tableInfo.importPackage(new StrategyConfig(), new GlobalConfig());
+        Assertions.assertEquals(2, tableInfo.getImportPackages().size());
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(TableName.class.getName()));
+
+        tableInfo = new TableInfo().setName("user");
+        strategyConfig = new StrategyConfig();
+        tableInfo.importPackage(strategyConfig.setSuperEntityClass("con.baomihua.demo.SuperEntity"), new GlobalConfig());
+        Assertions.assertEquals(1, tableInfo.getImportPackages().size());
+        Assertions.assertFalse(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains("con.baomihua.demo.SuperEntity"));
+
+        tableInfo = new TableInfo().setName("user");
+        strategyConfig = new StrategyConfig();
+        tableInfo.importPackage(strategyConfig, new GlobalConfig().setActiveRecord(true));
+        Assertions.assertEquals(1, tableInfo.getImportPackages().size());
+        Assertions.assertFalse(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Model.class.getName()));
+
+        strategyConfig = new StrategyConfig();
+        tableInfo = new TableInfo().setName("user");
+        tableInfo.addFields(new TableField().setName("u_id").setPropertyName(strategyConfig, "uid").setColumnType(DbColumnType.LONG).setKeyFlag(true));
+        tableInfo.importPackage(strategyConfig, new GlobalConfig());
+        Assertions.assertEquals(2, tableInfo.getImportPackages().size());
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(TableId.class.getName()));
+
+        strategyConfig = new StrategyConfig();
+        tableInfo = new TableInfo().setName("user");
+        tableInfo.addFields(new TableField().setName("u_id").setPropertyName(strategyConfig, "uid").setColumnType(DbColumnType.LONG).setKeyFlag(true).setKeyIdentityFlag(true));
+        tableInfo.importPackage(strategyConfig, new GlobalConfig());
+        Assertions.assertEquals(3, tableInfo.getImportPackages().size());
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(TableId.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(IdType.class.getName()));
+
+        strategyConfig = new StrategyConfig().setLogicDeleteFieldName("delete_flag");
+        tableInfo = new TableInfo().setName("user");
+        tableInfo.addFields(new TableField().setName("u_id").setPropertyName(strategyConfig, "uid").setColumnType(DbColumnType.LONG).setKeyFlag(true));
+        tableInfo.addFields(new TableField().setName("delete_flag").setPropertyName(strategyConfig, "deleteFlag").setColumnType(DbColumnType.BOOLEAN));
+        tableInfo.importPackage(strategyConfig, new GlobalConfig());
+        Assertions.assertEquals(4, tableInfo.getImportPackages().size());
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(com.baomidou.mybatisplus.annotation.TableField.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(TableLogic.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(TableId.class.getName()));
+
+        tableInfo = new TableInfo().setName("user");
+        tableInfo.addFields(new TableField().setName("name").setPropertyName(strategyConfig, "name").setColumnType(DbColumnType.STRING));
+        tableInfo.importPackage(new StrategyConfig(), new GlobalConfig().setIdType(IdType.ASSIGN_ID));
+        Assertions.assertEquals(1, tableInfo.getImportPackages().size());
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+
+        tableInfo = new TableInfo().setName("user").setHavePrimaryKey(true);
+        tableInfo.addFields(new TableField().setName("u_id").setPropertyName(strategyConfig, "uid").setColumnType(DbColumnType.LONG).setKeyFlag(true));
+        tableInfo.importPackage(new StrategyConfig(), new GlobalConfig().setIdType(IdType.ASSIGN_ID));
+        Assertions.assertEquals(3, tableInfo.getImportPackages().size());
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(TableId.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(IdType.class.getName()));
+
+        tableInfo = new TableInfo().setName("user").setHavePrimaryKey(true);
+        tableInfo.addFields(new TableField().setName("u_id").setPropertyName(strategyConfig, "uid").setColumnType(DbColumnType.LONG).setKeyFlag(true));
+        tableInfo.addFields(new TableField().setName("create_time").setPropertyName(strategyConfig, "createTime").setColumnType(DbColumnType.DATE).setFill(FieldFill.DEFAULT.name()));
+        tableInfo.importPackage(new StrategyConfig().addTableFills(new TableFill("createTime", FieldFill.DEFAULT)), new GlobalConfig());
+        Assertions.assertEquals(5, tableInfo.getImportPackages().size());
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Date.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(TableId.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(com.baomidou.mybatisplus.annotation.TableField.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(FieldFill.class.getName()));
+
+        tableInfo = new TableInfo().setName("user").setHavePrimaryKey(true);
+        tableInfo.addFields(new TableField().setName("u_id").setPropertyName(strategyConfig, "uid").setColumnType(DbColumnType.LONG).setKeyFlag(true));
+        tableInfo.addFields(new TableField().setName("version").setPropertyName(strategyConfig, "version").setColumnType(DbColumnType.LONG));
+        tableInfo.importPackage(new StrategyConfig().setVersionFieldName("version"), new GlobalConfig());
+        Assertions.assertEquals(3, tableInfo.getImportPackages().size());
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(TableId.class.getName()));
+        Assertions.assertTrue(tableInfo.getImportPackages().contains(Version.class.getName()));
+    }
+
+    @Test
+    void setEntityNameTest() {
+        Assertions.assertTrue(new TableInfo().setName("user").setEntityName(new StrategyConfig(), "UserEntity").isConvert());
+        Assertions.assertFalse(new TableInfo().setName("user").setEntityName(new StrategyConfig(), "User").isConvert());
+        Assertions.assertFalse(new TableInfo().setName("USER").setEntityName(new StrategyConfig().setCapitalMode(true), "User").isConvert());
+        Assertions.assertTrue(new TableInfo().setName("USER").setEntityName(new StrategyConfig().setCapitalMode(true), "UserEntity").isConvert());
+        Assertions.assertTrue(new TableInfo().setName("test_user").setEntityName(new StrategyConfig().setNaming(NamingStrategy.no_change), "TestUser").isConvert());
+        Assertions.assertFalse(new TableInfo().setName("user").setEntityName(new StrategyConfig().setNaming(NamingStrategy.no_change), "User").isConvert());
+        Assertions.assertFalse(new TableInfo().setName("test_user").setEntityName(new StrategyConfig().setNaming(NamingStrategy.underline_to_camel), "TestUser").isConvert());
+        Assertions.assertTrue(new TableInfo().setName("TEST_USER").setEntityName(new StrategyConfig().setNaming(NamingStrategy.underline_to_camel), "TestUser").isConvert());
+    }
+
+    @Test
+    void getFileNameTest() {
+        TableInfo tableInfo = new TableInfo();
+        Assertions.assertEquals("UserEntity", tableInfo.getFileName("User", "", () -> "UserEntity"));
+        Assertions.assertEquals("UserEntity", tableInfo.getFileName("User", null, () -> "UserEntity"));
+        Assertions.assertEquals("UserTable", tableInfo.getFileName("User", "%sTable", () -> "UserEntity"));
+        Assertions.assertEquals("UserTable", tableInfo.getFileName("User", "UserTable", () -> "UserEntity"));
     }
 
 }

+ 8 - 0
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/test/generator/StrategyConfigTest.java

@@ -219,6 +219,14 @@ class StrategyConfigTest {
         Assertions.assertFalse(strategyConfig.matchIncludeTable("testc"));
     }
 
+    @Test
+    void isCapitalModeNamingTest() {
+        Assertions.assertFalse(new StrategyConfig().isCapitalModeNaming("T_USER"));
+        Assertions.assertFalse(new StrategyConfig().setCapitalMode(true).isCapitalModeNaming("user"));
+        Assertions.assertFalse(new StrategyConfig().setCapitalMode(true).isCapitalModeNaming("user_name"));
+        Assertions.assertTrue(new StrategyConfig().setCapitalMode(true).isCapitalModeNaming("USER_NAME"));
+        Assertions.assertTrue(new StrategyConfig().setCapitalMode(true).isCapitalModeNaming("T_USER"));
+    }
 
     @Data
     static class SuperBean {