瀏覽代碼

优化代码,处理字段属性转换.

nieqiurong 4 年之前
父節點
當前提交
0f7db57af0
共有 15 個文件被更改,包括 213 次插入40 次删除
  1. 28 0
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisConfiguration.java
  2. 0 1
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java
  3. 9 2
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/DataSourceConfig.java
  4. 1 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/INameConvert.java
  5. 11 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/PackageConfig.java
  6. 30 1
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/StrategyConfig.java
  7. 3 7
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java
  8. 3 4
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/PathInfoHandler.java
  9. 40 6
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableField.java
  10. 35 9
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableInfo.java
  11. 1 1
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/querys/DecoratorDbQuery.java
  12. 4 8
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/rules/NamingStrategy.java
  13. 1 1
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/engine/AbstractTemplateEngine.java
  14. 46 0
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/config/po/TableFieldTest.java
  15. 1 0
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/test/generator/StrategyConfigTest.java

+ 28 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisConfiguration.java

@@ -198,106 +198,131 @@ public class MybatisConfiguration extends Configuration {
         getLanguageRegistry().setDefaultDriverClass(driver);
     }
 
+    @Override
     public void addKeyGenerator(String id, KeyGenerator keyGenerator) {
         keyGenerators.put(id, keyGenerator);
     }
 
+    @Override
     public Collection<String> getKeyGeneratorNames() {
         return keyGenerators.keySet();
     }
 
+    @Override
     public Collection<KeyGenerator> getKeyGenerators() {
         return keyGenerators.values();
     }
 
+    @Override
     public KeyGenerator getKeyGenerator(String id) {
         return keyGenerators.get(id);
     }
 
+    @Override
     public boolean hasKeyGenerator(String id) {
         return keyGenerators.containsKey(id);
     }
 
+    @Override
     public void addCache(Cache cache) {
         caches.put(cache.getId(), cache);
     }
 
+    @Override
     public Collection<String> getCacheNames() {
         return caches.keySet();
     }
 
+    @Override
     public Collection<Cache> getCaches() {
         return caches.values();
     }
 
+    @Override
     public Cache getCache(String id) {
         return caches.get(id);
     }
 
+    @Override
     public boolean hasCache(String id) {
         return caches.containsKey(id);
     }
 
+    @Override
     public void addResultMap(ResultMap rm) {
         resultMaps.put(rm.getId(), rm);
         checkLocallyForDiscriminatedNestedResultMaps(rm);
         checkGloballyForDiscriminatedNestedResultMaps(rm);
     }
 
+    @Override
     public Collection<String> getResultMapNames() {
         return resultMaps.keySet();
     }
 
+    @Override
     public Collection<ResultMap> getResultMaps() {
         return resultMaps.values();
     }
 
+    @Override
     public ResultMap getResultMap(String id) {
         return resultMaps.get(id);
     }
 
+    @Override
     public boolean hasResultMap(String id) {
         return resultMaps.containsKey(id);
     }
 
+    @Override
     public void addParameterMap(ParameterMap pm) {
         parameterMaps.put(pm.getId(), pm);
     }
 
+    @Override
     public Collection<String> getParameterMapNames() {
         return parameterMaps.keySet();
     }
 
+    @Override
     public Collection<ParameterMap> getParameterMaps() {
         return parameterMaps.values();
     }
 
+    @Override
     public ParameterMap getParameterMap(String id) {
         return parameterMaps.get(id);
     }
 
+    @Override
     public boolean hasParameterMap(String id) {
         return parameterMaps.containsKey(id);
     }
 
+    @Override
     public Map<String, XNode> getSqlFragments() {
         return sqlFragments;
     }
 
+    @Override
     public Collection<String> getMappedStatementNames() {
         buildAllStatements();
         return mappedStatements.keySet();
     }
 
+    @Override
     public Collection<MappedStatement> getMappedStatements() {
         buildAllStatements();
         return mappedStatements.values();
     }
 
+    @Override
     public MappedStatement getMappedStatement(String id) {
         return this.getMappedStatement(id, true);
     }
 
+    @Override
     public MappedStatement getMappedStatement(String id, boolean validateIncompleteStatements) {
         if (validateIncompleteStatements) {
             buildAllStatements();
@@ -305,6 +330,7 @@ public class MybatisConfiguration extends Configuration {
         return mappedStatements.get(id);
     }
 
+    @Override
     public boolean hasStatement(String statementName, boolean validateIncompleteStatements) {
         if (validateIncompleteStatements) {
             buildAllStatements();
@@ -335,6 +361,7 @@ public class MybatisConfiguration extends Configuration {
     }
 
     // Slow but a one time cost. A better solution is welcome.
+    @Override
     protected void checkGloballyForDiscriminatedNestedResultMaps(ResultMap rm) {
         if (rm.hasNestedResultMaps()) {
             for (Map.Entry<String, ResultMap> entry : resultMaps.entrySet()) {
@@ -353,6 +380,7 @@ public class MybatisConfiguration extends Configuration {
     }
 
     // Slow but a one time cost. A better solution is welcome.
+    @Override
     protected void checkLocallyForDiscriminatedNestedResultMaps(ResultMap rm) {
         if (!rm.hasNestedResultMaps() && rm.getDiscriminator() != null) {
             for (Map.Entry<String, String> entry : rm.getDiscriminator().getDiscriminatorMap().entrySet()) {

+ 0 - 1
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java

@@ -90,7 +90,6 @@ public class AutoGenerator {
         // 模板引擎初始化执行文件输出
         templateEngine.init(this.pretreatmentConfigBuilder(config)).mkdirs().batchOutput().open();
         logger.debug("==========================文件生成完成!!!==========================");
-        config.close();
     }
 
     /**

+ 9 - 2
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/DataSourceConfig.java

@@ -172,7 +172,7 @@ public class DataSourceConfig {
         try {
             Class.forName(this.driverName);
             conn = DriverManager.getConnection(this.url, this.username, this.password);
-            String schema = StringUtils.isNotBlank(this.schemaName) ? this.schemaName : getDefaultSchema(getDbType());
+            String schema = StringUtils.isNotBlank(this.schemaName) ? this.schemaName : getDefaultSchema();
             if (StringUtils.isNotBlank(schema)) {
                 this.schemaName = schema;
                 conn.setSchema(schema);
@@ -183,7 +183,14 @@ public class DataSourceConfig {
         return conn;
     }
 
-    private String getDefaultSchema(DbType dbType){
+    /**
+     * 获取数据库默认schema
+     *
+     * @return 默认schema
+     * @since 3.4.1
+     */
+    private String getDefaultSchema() {
+        DbType dbType = getDbType();
         String schema = null;
         if (DbType.POSTGRE_SQL == dbType) {
             //pg 默认 schema=public

+ 1 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/INameConvert.java

@@ -50,6 +50,7 @@ public interface INameConvert {
      * 默认名称转换接口类
      *
      * @author nieqiurong 2020/9/20.
+     * @since 3.4.1
      */
     class DefaultNameConvert implements INameConvert {
 

+ 11 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/PackageConfig.java

@@ -95,6 +95,7 @@ public class PackageConfig {
      * 连接父子包名
      *
      * @return 连接后的包名
+     * @since 3.4.1
      */
     public String joinPackage(String subPackage) {
         String parent = getParent();
@@ -120,4 +121,14 @@ public class PackageConfig {
         return Collections.unmodifiableMap(this.packageInfo);
     }
 
+    /**
+     * 获取包配置信息
+     *
+     * @param module 模块
+     * @return 配置信息
+     * @since 3.4.1
+     */
+    public String getPackageInfo(String module) {
+        return getPackageInfo().get(module);
+    }
 }

+ 30 - 1
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/StrategyConfig.java

@@ -419,7 +419,9 @@ public class StrategyConfig {
      * @param clazz        实体父类 Class
      * @param columnNaming 字段命名策略
      * @return this
+     * @deprecated 3.4.1 {@link #setSuperEntityClass(Class)} {@link #setColumnNaming(NamingStrategy)}
      */
+    @Deprecated
     public StrategyConfig setSuperEntityClass(Class<?> clazz, NamingStrategy columnNaming) {
         this.columnNaming = columnNaming;
         this.superEntityClass = clazz.getName();
@@ -554,7 +556,12 @@ public class StrategyConfig {
         return this.superEntityColumns;
     }
 
-    public void validate(){
+    /**
+     * 验证配置项
+     *
+     * @since 3.4.1
+     */
+    public void validate() {
         boolean isInclude = this.getInclude().size() > 0;
         boolean isExclude = this.getExclude().size() > 0;
         if (isInclude && isExclude) {
@@ -565,14 +572,36 @@ public class StrategyConfig {
         }
     }
 
+    /**
+     * 包含表名匹配
+     *
+     * @param tableName 表名
+     * @return 是否匹配
+     * @since 3.4.1
+     */
     public boolean matchIncludeTable(String tableName) {
         return matchTable(tableName, this.getInclude());
     }
 
+    /**
+     * 排除表名匹配
+     *
+     * @param tableName 表名
+     * @return 是否匹配
+     * @since 3.4.1
+     */
     public boolean matchExcludeTable(String tableName) {
         return matchTable(tableName, this.getExclude());
     }
 
+    /**
+     * 表名匹配
+     *
+     * @param tableName   表名
+     * @param matchTables 匹配集合
+     * @return 是否匹配
+     * @since 3.4.1
+     */
     private boolean matchTable(String tableName, Set<String> matchTables) {
         return matchTables.stream().anyMatch(t -> tableNameMatches(t, tableName));
     }

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

@@ -175,6 +175,8 @@ public class ConfigBuilder {
             }
             // 性能优化,只处理需执行表字段 github issues/219
             tableList.forEach(this::convertTableFields);
+            // 数据库操作完成,释放连接对象
+            dbQuery.closeConnection();
         } catch (SQLException e) {
             throw new RuntimeException(e);
         }
@@ -221,8 +223,7 @@ public class ConfigBuilder {
                 }
                 field.setName(columnName).setColumnName(newColumnName)
                     .setType(result.getStringResult(dbQuery.fieldType()))
-                    .setPropertyName(this.strategyConfig, strategyConfig.getNameConvert().propertyNameConvert(field))
-                    .setColumnType(dataSourceConfig.getTypeConvert().processTypeConvert(globalConfig, field))
+                    .setPropertyName(strategyConfig.getNameConvert().propertyNameConvert(field), this.strategyConfig, dataSourceConfig.getTypeConvert().processTypeConvert(globalConfig, field))
                     .setComment(result.getFiledComment())
                     .setCustomMap(dbQuery.getCustomFields(result.getResultSet()));
                 // 填充逻辑判断
@@ -259,11 +260,6 @@ public class ConfigBuilder {
         return StringUtils.isBlank(comment) ? StringPool.EMPTY : comment.replaceAll("\r\n", "\t");
     }
 
-    public void close() {
-        //暂时只有数据库连接需要关闭
-        dbQuery.closeConnection();
-    }
-
     /**
      * 不再建议调用此方法,后续不再公开此方法.
      *

+ 3 - 4
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/PathInfoHandler.java

@@ -40,12 +40,11 @@ class PathInfoHandler {
 
     private final String outputDir;
 
-    private final Map<String, String> packageInfo;
-
+    private final PackageConfig packageConfig;
 
     PathInfoHandler(GlobalConfig globalConfig, TemplateConfig templateConfig, PackageConfig packageConfig) {
         this.outputDir = globalConfig.getOutputDir();
-        this.packageInfo = packageConfig.getPackageInfo();
+        this.packageConfig = packageConfig;
         Map<String, String> pathInfo = packageConfig.getPathInfo();
         if (CollectionUtils.isNotEmpty(pathInfo)) {
             this.pathInfo.putAll(pathInfo);
@@ -64,7 +63,7 @@ class PathInfoHandler {
     }
 
     private void putPathInfo(String template, String path, String module) {
-        if (StringUtils.isNotBlank(template)) pathInfo.put(path, joinPath(outputDir, packageInfo.get(module)));
+        if (StringUtils.isNotBlank(template)) pathInfo.put(path, joinPath(outputDir, packageConfig.getPackageInfo(module)));
     }
 
     /**

+ 40 - 6
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableField.java

@@ -79,7 +79,7 @@ public class TableField {
             return this;
         }
         if (strategyConfig.isCapitalModeNaming(name)) {
-            this.convert = false;
+            this.convert = !name.equalsIgnoreCase(propertyName);
         } else {
             // 转换字段
             if (NamingStrategy.underline_to_camel == strategyConfig.getColumnNaming()) {
@@ -98,8 +98,7 @@ public class TableField {
     /**
      * @param propertyName 属性名称
      * @return this
-     * @see #setPropertyName(StrategyConfig, String)
-     * @deprecated 3.4.1
+     * @deprecated 3.4.1 {@link #setPropertyName(String, StrategyConfig, IColumnType)}
      */
     @Deprecated
     public TableField setPropertyName(String propertyName) {
@@ -107,17 +106,52 @@ public class TableField {
         return this;
     }
 
-    public TableField setPropertyName(StrategyConfig strategyConfig, String propertyName) {
+    /**
+     * 设置属性名称
+     *
+     * @param propertyName   属性名
+     * @param strategyConfig 策略配置
+     * @param columnType     字段类型
+     * @return this
+     * @since 3.4.1
+     */
+    public TableField setPropertyName(String propertyName, StrategyConfig strategyConfig, IColumnType columnType) {
+        this.columnType = columnType;
         if (strategyConfig.isEntityBooleanColumnRemoveIsPrefix()
-            && "boolean".equalsIgnoreCase(this.getPropertyType()) && this.getPropertyName().startsWith("is")) {
+            && "boolean".equalsIgnoreCase(this.getPropertyType()) && propertyName.startsWith("is")) {
             this.convert = true;
-            propertyName = StringUtils.removePrefixAfterPrefixToLower(this.getPropertyName(), 2);
+            this.propertyName = StringUtils.removePrefixAfterPrefixToLower(propertyName, 2);
+            return this;
         }
         this.propertyName = propertyName;
         this.setConvert(strategyConfig);
         return this;
     }
 
+    /**
+     * 设置属性名称
+     *
+     * @param strategyConfig 策略配置
+     * @param propertyName   属性名
+     * @return this
+     * @deprecated 3.4.1
+     */
+    @Deprecated
+    public TableField setPropertyName(StrategyConfig strategyConfig, String propertyName) {
+        return setPropertyName(propertyName, strategyConfig, this.columnType);
+    }
+
+    /**
+     * @param columnType 字段类型
+     * @return this
+     * @deprecated 3.4.1 {@link #setPropertyName(String, StrategyConfig, IColumnType)}
+     */
+    @Deprecated
+    public TableField setColumnType(IColumnType columnType) {
+        this.columnType = columnType;
+        return this;
+    }
+
     public String getPropertyType() {
         if (null != columnType) {
             return columnType.getType();

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

@@ -84,17 +84,20 @@ public class TableInfo {
         if (strategyConfig.startsWithTablePrefix(name) || strategyConfig.isEntityTableFieldAnnotationEnable()) {
             // 包含前缀
             this.convert = true;
-            return this;
-        }
-        // 转换字段
-        if (NamingStrategy.underline_to_camel == strategyConfig.getColumnNaming()) {
-            // 包含大写处理
-            if (StringUtils.containsUpperCase(name)) {
+        } else if (strategyConfig.isCapitalModeNaming(name)) {
+            // 包含
+            this.convert = !entityName.equalsIgnoreCase(name);
+        } else {
+            // 转换字段
+            if (NamingStrategy.underline_to_camel == strategyConfig.getColumnNaming()) {
+                // 包含大写处理
+                if (StringUtils.containsUpperCase(name)) {
+                    this.convert = true;
+                }
+            } else if (!entityName.equalsIgnoreCase(name)) {
                 this.convert = true;
             }
-            return this;
         }
-        this.convert = !entityName.equalsIgnoreCase(name);
         return this;
     }
 
@@ -238,6 +241,13 @@ public class TableInfo {
         return this;
     }
 
+    /**
+     * 导包处理
+     *
+     * @param strategyConfig 策略配置
+     * @param globalConfig   全局配置
+     * @since 3.4.1
+     */
     public void importPackage(StrategyConfig strategyConfig, GlobalConfig globalConfig) {
         boolean importSerializable = true;
         if (StringUtils.isNotBlank(strategyConfig.getSuperEntityClass())) {
@@ -247,7 +257,7 @@ public class TableInfo {
         } else {
             if (globalConfig.isActiveRecord()) {
                 // 无父类开启 AR 模式
-                this.getImportPackages().add(Model.class.getCanonicalName());
+                this.importPackages.add(Model.class.getCanonicalName());
                 importSerializable = false;
             }
         }
@@ -295,6 +305,13 @@ public class TableInfo {
         });
     }
 
+    /**
+     * 处理表信息(文件名与导包)
+     *
+     * @param strategyConfig 策略配置
+     * @param globalConfig   全局配置
+     * @since 3.4.1
+     */
     public void processTable(StrategyConfig strategyConfig, GlobalConfig globalConfig) {
         String entityName = strategyConfig.getNameConvert().entityNameConvert(this);
         this.setEntityName(strategyConfig, this.getFileName(entityName, globalConfig.getEntityName(), () -> entityName));
@@ -307,6 +324,15 @@ public class TableInfo {
     }
 
 
+    /**
+     * 获取文件名称(含格式化处理)
+     *
+     * @param entityName   实体名
+     * @param value        文件名(支持格式化处理)
+     * @param defaultValue 默认文件名
+     * @return 文件名称
+     * @since 3.4.1
+     */
     public String getFileName(String entityName, String value, Supplier<String> defaultValue) {
         return StringUtils.isNotBlank(value) ? String.format(value, entityName) : defaultValue.get();
     }

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

@@ -186,7 +186,7 @@ public class DecoratorDbQuery extends AbstractDbQuery {
                 count++;
             }
             long end = System.nanoTime();
-            logger.info("返回记录数:{},耗时(ms):{}", count, (end - start) / 1000000);
+            logger.debug("返回记录数:{},耗时(ms):{}", count, (end - start) / 1000000);
         }
     }
 

+ 4 - 8
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/rules/NamingStrategy.java

@@ -86,14 +86,10 @@ public enum NamingStrategy {
         if (StringUtils.isBlank(name)) {
             return StringPool.EMPTY;
         }
-        if (null != prefix) {
-            // 判断是否有匹配的前缀,然后截取前缀
-            // 删除前缀
-            return prefix.stream().filter(pf -> name.toLowerCase()
-                .matches(StringPool.HAT + pf.toLowerCase() + ".*"))
-                .findFirst().map(pf -> name.substring(pf.length())).orElse(name);
-        }
-        return name;
+        // 判断是否有匹配的前缀,然后截取前缀
+        // 删除前缀 TODO 前缀统一配置小写格式????
+        return prefix.stream().filter(pf -> name.toLowerCase().startsWith(pf))
+            .findFirst().map(pf -> name.substring(pf.length())).orElse(name);
     }
 
     /**

+ 1 - 1
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/engine/AbstractTemplateEngine.java

@@ -224,7 +224,7 @@ public abstract class AbstractTemplateEngine {
         objectMap.put("entity", tableInfo.getEntityName());
         objectMap.put("entitySerialVersionUID", config.getStrategyConfig().isEntitySerialVersionUID());
         objectMap.put("entityColumnConstant", config.getStrategyConfig().isEntityColumnConstant());
-        objectMap.put("entityBuilderModel", config.getStrategyConfig().isEntityBuilderModel());
+        objectMap.put("entityBuilderModel", config.getStrategyConfig().isChainModel());
         objectMap.put("chainModel", config.getStrategyConfig().isChainModel());
         objectMap.put("entityLombokModel", config.getStrategyConfig().isEntityLombokModel());
         objectMap.put("entityBooleanColumnRemoveIsPrefix", config.getStrategyConfig().isEntityBooleanColumnRemoveIsPrefix());

+ 46 - 0
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/config/po/TableFieldTest.java

@@ -0,0 +1,46 @@
+package com.baomidou.mybatisplus.generator.config.po;
+
+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;
+
+/**
+ * @author nieqiurong 2020/10/8.
+ */
+public class TableFieldTest {
+
+    @Test
+    void convertTest(){
+        TableField tableField;
+        Assertions.assertFalse(new TableField().setName("desc").setPropertyName(new StrategyConfig(), "desc").isConvert());
+        Assertions.assertTrue(new TableField().setName("desc").setPropertyName(new StrategyConfig(), "desc1").isConvert());
+        Assertions.assertTrue(new TableField().setName("DESC").setPropertyName(new StrategyConfig(), "desc").isConvert());
+        Assertions.assertTrue(new TableField().setName("desc").setKeyWords(true).setPropertyName(new StrategyConfig(), "desc").isConvert());
+        Assertions.assertTrue(new TableField().setName("desc").setKeyWords(true).setPropertyName(new StrategyConfig(), "desc1").isConvert());
+        Assertions.assertTrue(new TableField().setName("name").setPropertyName(new StrategyConfig().setEntityTableFieldAnnotationEnable(true), "name").isConvert());
+        Assertions.assertTrue(new TableField().setName("name").setPropertyName(new StrategyConfig().setEntityTableFieldAnnotationEnable(true), "name1").isConvert());
+        Assertions.assertFalse(new TableField().setName("NAME").setPropertyName(new StrategyConfig().setCapitalMode(true), "name").isConvert());
+        Assertions.assertTrue(new TableField().setName("USER_NAME").setPropertyName(new StrategyConfig().setCapitalMode(true), "userName").isConvert());
+        Assertions.assertTrue(new TableField().setName("USER_NAME").setPropertyName(new StrategyConfig().setCapitalMode(true), "userName1").isConvert());
+        Assertions.assertTrue(new TableField().setName("USER_NAME").setPropertyName(new StrategyConfig().setCapitalMode(true), "userName").isConvert());
+        Assertions.assertFalse(new TableField().setName("user_name").setPropertyName(new StrategyConfig().setColumnNaming(NamingStrategy.underline_to_camel), "userName").isConvert());
+        Assertions.assertTrue(new TableField().setName("USER_NAME").setPropertyName(new StrategyConfig().setColumnNaming(NamingStrategy.underline_to_camel), "userName").isConvert());
+        Assertions.assertTrue(new TableField().setName("user_name").setPropertyName(new StrategyConfig().setColumnNaming(NamingStrategy.no_change), "userName").isConvert());
+        Assertions.assertFalse(new TableField().setName("USER_NAME").setPropertyName(new StrategyConfig().setColumnNaming(NamingStrategy.no_change), "USER_NAME").isConvert());
+        Assertions.assertTrue(new TableField().setName("NAME").setPropertyName(new StrategyConfig().setColumnNaming(NamingStrategy.no_change), "name").isConvert());
+        tableField = new TableField().setName("delete").setColumnType(DbColumnType.BOOLEAN).setPropertyName(new StrategyConfig().setEntityBooleanColumnRemoveIsPrefix(true), "delete");
+        Assertions.assertEquals("delete", tableField.getPropertyName());
+        Assertions.assertFalse(tableField.isConvert());
+        tableField = new TableField().setName("delete").setPropertyName("delete", new StrategyConfig().setEntityBooleanColumnRemoveIsPrefix(true), DbColumnType.BOOLEAN);
+        Assertions.assertEquals("delete", tableField.getPropertyName());
+        Assertions.assertFalse(tableField.isConvert());
+        tableField = new TableField().setName("is_delete").setColumnType(DbColumnType.BOOLEAN).setPropertyName(new StrategyConfig().setEntityBooleanColumnRemoveIsPrefix(true), "isDelete");
+        Assertions.assertEquals("delete", tableField.getPropertyName());
+        Assertions.assertTrue(tableField.isConvert());
+        tableField = new TableField().setName("is_delete").setPropertyName("isDelete", new StrategyConfig().setEntityBooleanColumnRemoveIsPrefix(true), DbColumnType.BOOLEAN);
+        Assertions.assertEquals("delete", tableField.getPropertyName());
+        Assertions.assertTrue(tableField.isConvert());
+    }
+}

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

@@ -226,6 +226,7 @@ class StrategyConfigTest {
         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"));
+        Assertions.assertTrue(new StrategyConfig().setCapitalMode(true).isCapitalModeNaming("NAME"));
     }
 
     @Data