Browse Source

删掉一些旧的兼容项,增加装饰者处理DbQuery逻辑,增加addTableFills方法,生成完成释放数据库连接.

nieqiurong 4 years ago
parent
commit
f0257dc181
14 changed files with 227 additions and 134 deletions
  1. 2 15
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisParameterHandler.java
  2. 0 15
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/handlers/MetaObjectHandler.java
  3. 0 2
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableInfoHelper.java
  4. 1 6
      mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/test/MybatisParameterHandlerTest.java
  5. 1 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java
  6. 3 2
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/DataSourceConfig.java
  7. 0 13
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/IDbQuery.java
  8. 19 1
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/StrategyConfig.java
  9. 28 72
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java
  10. 152 0
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/querys/DecoratorDbQuery.java
  11. 1 1
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/test/generator/CodeGeneratorTest.java
  12. 1 1
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/test/generator/CodeGeneratorWithTemplateTest.java
  13. 2 6
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/test/generator/MysqlGenerator.java
  14. 17 0
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/test/generator/StrategyConfigTest.java

+ 2 - 15
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisParameterHandler.java

@@ -142,21 +142,8 @@ public class MybatisParameterHandler implements ParameterHandler {
 
     protected void insertFill(MetaObject metaObject, TableInfo tableInfo) {
         GlobalConfigUtils.getMetaObjectHandler(this.configuration).ifPresent(metaObjectHandler -> {
-            if (metaObjectHandler.openInsertFill()) {
-                if (tableInfo.isWithInsertFill()) {
-                    metaObjectHandler.insertFill(metaObject);
-                } else {
-                    // 兼容旧操作 id类型为input或none的要用填充器处理一下
-                    if (metaObjectHandler.compatibleFillId()) {
-                        String keyProperty = tableInfo.getKeyProperty();
-                        if (StringUtils.isNotBlank(keyProperty)) {
-                            Object value = metaObject.getValue(keyProperty);
-                            if (value == null && (IdType.NONE == tableInfo.getIdType() || IdType.INPUT == tableInfo.getIdType())) {
-                                metaObjectHandler.insertFill(metaObject);
-                            }
-                        }
-                    }
-                }
+            if (metaObjectHandler.openInsertFill() && tableInfo.isWithInsertFill()) {
+                metaObjectHandler.insertFill(metaObject);
             }
         });
     }

+ 0 - 15
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/handlers/MetaObjectHandler.java

@@ -44,21 +44,6 @@ public interface MetaObjectHandler {
         return true;
     }
 
-    /**
-     * 兼容填充主键判断开关
-     * 如果启用开关:当主键值为空且主键生成策略为NONE或INPUT会进入新增填充
-     * 这开关主要是用来兼容旧版本的用户使用插入填充来进行主键填充的开关
-     * 暂时不确定什么时候会移出此开关,请尽快使用新的Id生成策略来生成Id
-     *
-     * @return 是否启用
-     * @since 3.3.0
-     * @deprecated 3.3.2
-     */
-    @Deprecated
-    default boolean compatibleFillId() {
-        return false;
-    }
-
     /**
      * 是否开启了更新填充
      */

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

@@ -251,7 +251,6 @@ public class TableInfoHelper {
         /* 数据库全局配置 */
         GlobalConfig.DbConfig dbConfig = globalConfig.getDbConfig();
         ReflectorFactory reflectorFactory = tableInfo.getConfiguration().getReflectorFactory();
-        //TODO @咩咩 有空一起来撸完这反射模块.
         Reflector reflector = reflectorFactory.findForClass(clazz);
         List<Field> list = getAllFields(clazz);
         // 标记是否读取到主键
@@ -467,7 +466,6 @@ public class TableInfoHelper {
             throw new IllegalArgumentException("not configure IKeyGenerator implementation class.");
         }
         Configuration configuration = builderAssistant.getConfiguration();
-        //TODO 这里不加上builderAssistant.getCurrentNamespace()的会导致com.baomidou.mybatisplus.core.parser.SqlParserHelper.getSqlParserInfo越(chu)界(gui)
         String id = builderAssistant.getCurrentNamespace() + StringPool.DOT + baseStatementId + SelectKeyGenerator.SELECT_KEY_SUFFIX;
         ResultMap resultMap = new ResultMap.Builder(builderAssistant.getConfiguration(), id, tableInfo.getKeyType(), new ArrayList<>()).build();
         MappedStatement mappedStatement = new MappedStatement.Builder(builderAssistant.getConfiguration(), id,

+ 1 - 6
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/test/MybatisParameterHandlerTest.java

@@ -44,6 +44,7 @@ class MybatisParameterHandlerTest {
 
         private String name;
 
+        @TableField(fill = FieldFill.INSERT)
         private String insertOperator;
 
         @TableField(fill = FieldFill.UPDATE)
@@ -65,12 +66,6 @@ class MybatisParameterHandlerTest {
         BoundSql boundSql = mock(BoundSql.class);
         StaticSqlSource staticSqlSource = mock(StaticSqlSource.class);
         GlobalConfigUtils.getGlobalConfig(configuration).setIdentifierGenerator(new DefaultIdentifierGenerator()).setMetaObjectHandler(new MetaObjectHandler() {
-
-            @Override
-            public boolean compatibleFillId() {
-                return true;
-            }
-
             @Override
             public void insertFill(MetaObject metaObject) {
                 setFieldValByName("id", 666L, metaObject);

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

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

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

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils;
 import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
 import com.baomidou.mybatisplus.generator.config.converts.TypeConverts;
 import com.baomidou.mybatisplus.generator.config.querys.DbQueryRegistry;
+import com.baomidou.mybatisplus.generator.config.querys.DecoratorDbQuery;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -47,7 +48,7 @@ public class DataSourceConfig {
      */
     private DbType dbType;
     /**
-     * PostgreSQL schemaName
+     * schemaName
      */
     private String schemaName;
     /**
@@ -85,7 +86,7 @@ public class DataSourceConfig {
             dbQuery = Optional.ofNullable(dbQueryRegistry.getDbQuery(dbType))
                 .orElseGet(() -> dbQueryRegistry.getDbQuery(DbType.MYSQL));
         }
-        return dbQuery;
+        return new DecoratorDbQuery(dbQuery, this);
     }
 
     /**

+ 0 - 13
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/IDbQuery.java

@@ -18,8 +18,6 @@ package com.baomidou.mybatisplus.generator.config;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
-import com.baomidou.mybatisplus.annotation.DbType;
-
 /**
  * 表数据查询接口
  *
@@ -28,17 +26,6 @@ import com.baomidou.mybatisplus.annotation.DbType;
  */
 public interface IDbQuery {
 
-    /**
-     * 数据库类型
-     *
-     * @deprecated 3.3.1 {@link DataSourceConfig#setDbType(DbType)}
-     */
-    @Deprecated
-    default DbType dbType() {
-        return null;
-    }
-
-
     /**
      * 表信息查询 SQL
      */

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

@@ -29,6 +29,7 @@ import lombok.Setter;
 import lombok.experimental.Accessors;
 
 import java.lang.reflect.Field;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
@@ -182,7 +183,7 @@ public class StrategyConfig {
     /**
      * 表填充字段
      */
-    private List<TableFill> tableFillList = null;
+    private final List<TableFill> tableFillList = new ArrayList<>();
     /**
      * 启用sql过滤,语法不能支持使用sql过滤表的话,可以考虑关闭此开关.
      *
@@ -342,6 +343,23 @@ public class StrategyConfig {
         return this;
     }
 
+    /**
+     * 设置表填充字段
+     *
+     * @param tableFillList tableFillList
+     * @see #addTableFills(TableFill...)
+     * @deprecated 3.4.1
+     */
+    @Deprecated
+    public StrategyConfig setTableFillList(List<TableFill> tableFillList) {
+        return this.addTableFills(tableFillList.toArray(new TableFill[]{}));
+    }
+
+    public StrategyConfig addTableFills(TableFill... tableFill) {
+        this.tableFillList.addAll(Arrays.asList(tableFill));
+        return this;
+    }
+
     /**
      * <p>
      * 父类 Class 反射属性转换为公共字段

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

@@ -22,8 +22,8 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.generator.InjectionConfig;
 import com.baomidou.mybatisplus.generator.config.*;
 import com.baomidou.mybatisplus.generator.config.po.TableField;
-import com.baomidou.mybatisplus.generator.config.po.TableFill;
 import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.querys.DecoratorDbQuery;
 import com.baomidou.mybatisplus.generator.config.querys.H2Query;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 
@@ -84,7 +84,10 @@ public class ConfigBuilder {
      * 过滤正则
      */
     private static final Pattern REGX = Pattern.compile("[~!/@#$%^&*()-_=+\\\\|[{}];:'\",<.>?]+");
-
+    /**
+     * 表数据查询
+     */
+    private final DecoratorDbQuery dbQuery;
     /**
      * 在构造器中处理配置
      *
@@ -96,18 +99,14 @@ public class ConfigBuilder {
      */
     public ConfigBuilder(PackageConfig packageConfig, DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig,
                          TemplateConfig template, GlobalConfig globalConfig) {
+        this.connection = dataSourceConfig.getConn();
+        this.dataSourceConfig = dataSourceConfig;
+        this.dbQuery = (DecoratorDbQuery) dataSourceConfig.getDbQuery();
         // 全局配置
         this.globalConfig = Optional.ofNullable(globalConfig).orElseGet(GlobalConfig::new);
         // 模板配置
         this.template = Optional.ofNullable(template).orElseGet(TemplateConfig::new);
-        // 包配置
-        if (null == packageConfig) {
-            handlerPackage(this.template, this.globalConfig.getOutputDir(), new PackageConfig());
-        } else {
-            handlerPackage(this.template, this.globalConfig.getOutputDir(), packageConfig);
-        }
-        this.dataSourceConfig = dataSourceConfig;
-        this.connection = dataSourceConfig.getConn();
+        handlerPackage(this.template, this.globalConfig.getOutputDir(), packageConfig == null ? new PackageConfig() : packageConfig);
         // 策略配置
         this.strategyConfig = Optional.ofNullable(strategyConfig).orElseGet(StrategyConfig::new);
         this.tableInfoList = getTablesInfo(this.strategyConfig);
@@ -303,45 +302,8 @@ public class ConfigBuilder {
 
         //不存在的表名
         Set<String> notExistTables = new HashSet<>();
-        DbType dbType = this.dataSourceConfig.getDbType();
-        IDbQuery dbQuery = this.dataSourceConfig.getDbQuery();
         try {
-            String tablesSql = dataSourceConfig.getDbQuery().tablesSql();
-            if (DbType.POSTGRE_SQL == dbType) {
-                String schema = dataSourceConfig.getSchemaName();
-                if (schema == null) {
-                    //pg 默认 schema=public
-                    schema = "public";
-                    dataSourceConfig.setSchemaName(schema);
-                }
-                tablesSql = String.format(tablesSql, schema);
-            } else if (DbType.KINGBASE_ES == dbType) {
-                String schema = dataSourceConfig.getSchemaName();
-                if (schema == null) {
-                    //kingbase 默认 schema=PUBLIC
-                    schema = "PUBLIC";
-                    dataSourceConfig.setSchemaName(schema);
-                }
-                tablesSql = String.format(tablesSql, schema);
-            } else if (DbType.DB2 == dbType) {
-                String schema = dataSourceConfig.getSchemaName();
-                if (schema == null) {
-                    //db2 默认 schema=current schema
-                    schema = "current schema";
-                    dataSourceConfig.setSchemaName(schema);
-                }
-                tablesSql = String.format(tablesSql, schema);
-            }
-            //oracle数据库表太多,出现最大游标错误
-            else if (DbType.ORACLE == dbType) {
-                String schema = dataSourceConfig.getSchemaName();
-                //oracle 默认 schema=username
-                if (schema == null) {
-                    schema = dataSourceConfig.getUsername().toUpperCase();
-                    dataSourceConfig.setSchemaName(schema);
-                }
-                tablesSql = String.format(tablesSql, schema);
-            }
+            String tablesSql = dbQuery.tablesSql();
             StringBuilder sql = new StringBuilder(tablesSql);
             if (config.isEnableSqlFilter()) {
                 if (config.getLikeTable() != null) {
@@ -455,24 +417,11 @@ public class ConfigBuilder {
         List<TableField> fieldList = new ArrayList<>();
         List<TableField> commonFieldList = new ArrayList<>();
         DbType dbType = this.dataSourceConfig.getDbType();
-        IDbQuery dbQuery = dataSourceConfig.getDbQuery();
         String tableName = tableInfo.getName();
         try {
-            String tableFieldsSql = dbQuery.tableFieldsSql();
+            String tableFieldsSql = dbQuery.tableFieldsSql(tableName);
             Set<String> h2PkColumns = new HashSet<>();
-            if (DbType.POSTGRE_SQL == dbType) {
-                tableFieldsSql = String.format(tableFieldsSql, dataSourceConfig.getSchemaName(), tableName);
-            } else if (DbType.KINGBASE_ES == dbType) {
-                tableFieldsSql = String.format(tableFieldsSql, dataSourceConfig.getSchemaName(), tableName);
-            } else if (DbType.DB2 == dbType) {
-                tableFieldsSql = String.format(tableFieldsSql, dataSourceConfig.getSchemaName(), tableName);
-            } else if (DbType.ORACLE == dbType) {
-                tableName = tableName.toUpperCase();
-                tableFieldsSql = String.format(tableFieldsSql.replace("#schema", dataSourceConfig.getSchemaName()), tableName);
-            } else if (DbType.DM == dbType) {
-                tableName = tableName.toUpperCase();
-                tableFieldsSql = String.format(tableFieldsSql, tableName);
-            } else if (DbType.H2 == dbType) {
+            if (DbType.H2 == dbType) {
                 try (PreparedStatement pkQueryStmt = connection.prepareStatement(String.format(H2Query.PK_QUERY_SQL, tableName));
                      ResultSet pkResults = pkQueryStmt.executeQuery()) {
                     while (pkResults.next()) {
@@ -482,9 +431,6 @@ public class ConfigBuilder {
                         }
                     }
                 }
-                tableFieldsSql = String.format(tableFieldsSql, tableName);
-            } else {
-                tableFieldsSql = String.format(tableFieldsSql, tableName);
             }
             try (
                 PreparedStatement preparedStatement = connection.prepareStatement(tableFieldsSql);
@@ -546,12 +492,11 @@ public class ConfigBuilder {
                         field.setComment(formatComment(results.getString(fieldCommentColumn)));
                     }
                     // 填充逻辑判断
-                    List<TableFill> tableFillList = getStrategyConfig().getTableFillList();
-                    if (null != tableFillList) {
-                        // 忽略大写字段问题
-                        tableFillList.stream().filter(tf -> tf.getFieldName().equalsIgnoreCase(field.getName()))
-                            .findFirst().ifPresent(tf -> field.setFill(tf.getFieldFill().name()));
-                    }
+                    getStrategyConfig().getTableFillList()
+                        .stream()
+                        //忽略大写字段问题
+                        .filter(tf -> tf.getFieldName().equalsIgnoreCase(field.getName()))
+                        .findFirst().ifPresent(tf -> field.setFill(tf.getFieldFill().name()));
                     if (strategyConfig.includeSuperEntityColumns(field.getName())) {
                         // 跳过公共字段
                         commonFieldList.add(field);
@@ -682,4 +627,15 @@ public class ConfigBuilder {
         return StringUtils.isBlank(comment) ? StringPool.EMPTY : comment.replaceAll("\r\n", "\t");
     }
 
+    public void close() {
+        //暂时只有数据库连接需要关闭
+        Optional.ofNullable(connection).ifPresent((con) -> {
+            try {
+                con.close();
+            } catch (SQLException sqlException) {
+                sqlException.printStackTrace();
+            }
+        });
+    }
+
 }

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

@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2011-2020, baomidou (jobob@qq.com).
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * <p>
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.baomidou.mybatisplus.generator.config.querys;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+import com.baomidou.mybatisplus.generator.config.IDbQuery;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ * 装饰DbQuery
+ *
+ * @author nieqiurong 2020/9/17.
+ */
+public class DecoratorDbQuery extends AbstractDbQuery {
+
+    private final IDbQuery dbQuery;
+    private final DataSourceConfig dataSourceConfig;
+    private final DbType dbType;
+
+    public DecoratorDbQuery(IDbQuery dbQuery, DataSourceConfig dataSourceConfig) {
+        this.dbQuery = dbQuery;
+        this.dataSourceConfig = dataSourceConfig;
+        this.dbType = dataSourceConfig.getDbType();
+    }
+
+    @Override
+    public String tablesSql() {
+        String tablesSql = dbQuery.tablesSql();
+        String schema = dataSourceConfig.getSchemaName();
+        if (DbType.POSTGRE_SQL == dbType) {
+            if (schema == null) {
+                //pg 默认 schema=public
+                schema = "public";
+                dataSourceConfig.setSchemaName(schema);
+            }
+            tablesSql = String.format(tablesSql, schema);
+        } else if (DbType.KINGBASE_ES == dbType) {
+            if (schema == null) {
+                //kingbase 默认 schema=PUBLIC
+                schema = "PUBLIC";
+                dataSourceConfig.setSchemaName(schema);
+            }
+            tablesSql = String.format(tablesSql, schema);
+        } else if (DbType.DB2 == dbType) {
+            if (schema == null) {
+                //db2 默认 schema=current schema
+                schema = "current schema";
+                dataSourceConfig.setSchemaName(schema);
+            }
+            tablesSql = String.format(tablesSql, schema);
+        }
+        //oracle数据库表太多,出现最大游标错误
+        else if (DbType.ORACLE == dbType) {
+            //oracle 默认 schema=username
+            if (schema == null) {
+                schema = dataSourceConfig.getUsername().toUpperCase();
+                dataSourceConfig.setSchemaName(schema);
+            }
+            tablesSql = String.format(tablesSql, schema);
+        }
+        return tablesSql;
+    }
+
+    @Override
+    public String tableFieldsSql() {
+        return dbQuery.tableFieldsSql();
+    }
+
+    /**
+     * 扩展{@link #tableFieldsSql()}接口
+     *
+     * @param tableName 表名
+     * @return 查询表字段语句
+     */
+    public String tableFieldsSql(String tableName) {
+        String tableFieldsSql = this.tableFieldsSql();
+        if (DbType.POSTGRE_SQL == dbType) {
+            tableFieldsSql = String.format(tableFieldsSql, dataSourceConfig.getSchemaName(), tableName);
+        } else if (DbType.KINGBASE_ES == dbType) {
+            tableFieldsSql = String.format(tableFieldsSql, dataSourceConfig.getSchemaName(), tableName);
+        } else if (DbType.DB2 == dbType) {
+            tableFieldsSql = String.format(tableFieldsSql, dataSourceConfig.getSchemaName(), tableName);
+        } else if (DbType.ORACLE == dbType) {
+            tableName = tableName.toUpperCase();
+            tableFieldsSql = String.format(tableFieldsSql.replace("#schema", dataSourceConfig.getSchemaName()), tableName);
+        } else if (DbType.DM == dbType) {
+            tableName = tableName.toUpperCase();
+            tableFieldsSql = String.format(tableFieldsSql, tableName);
+        } else if (DbType.H2 == dbType) {
+            tableFieldsSql = String.format(tableFieldsSql, tableName);
+        } else {
+            tableFieldsSql = String.format(tableFieldsSql, tableName);
+        }
+        return tableFieldsSql;
+    }
+
+    @Override
+    public String tableName() {
+        return dbQuery.tableName();
+    }
+
+    @Override
+    public String tableComment() {
+        return dbQuery.tableComment();
+    }
+
+    @Override
+    public String fieldName() {
+        return dbQuery.fieldName();
+    }
+
+    @Override
+    public String fieldType() {
+        return dbQuery.fieldType();
+    }
+
+    @Override
+    public String fieldComment() {
+        return dbQuery.fieldComment();
+    }
+
+    @Override
+    public String fieldKey() {
+        return dbQuery.fieldKey();
+    }
+
+    @Override
+    public boolean isKeyIdentity(ResultSet results) throws SQLException {
+        return dbQuery.isKeyIdentity(results);
+    }
+
+    @Override
+    public String[] fieldCustom() {
+        return dbQuery.fieldCustom();
+    }
+}

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

@@ -45,7 +45,7 @@ class CodeGeneratorTest {
     /**
      * 是否去掉生成实体的属性名前缀
      */
-    private String[] fieldPrefix = null;
+    private String[] fieldPrefix = new String[]{};
     /**
      * 生成的Service 接口类名是否以I开头
      * <p>默认是以I开头</p>

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

@@ -46,7 +46,7 @@ class CodeGeneratorWithTemplateTest {
     /**
      * 是否去掉生成实体的属性名前缀
      */
-    private String[] fieldPrefix = null;
+    private String[] fieldPrefix = new String[]{};
     /**
      * 生成的Service 接口类名是否以I开头
      * <p>默认是以I开头</p>

+ 2 - 6
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/test/generator/MysqlGenerator.java

@@ -44,10 +44,6 @@ public class MysqlGenerator extends GeneratorTest {
      */
     public static void main(String[] args) {
         int result = scanner();
-        // 自定义需要填充的字段
-        List<TableFill> tableFillList = new ArrayList<>();
-        tableFillList.add(new TableFill("ASDD_SS", FieldFill.INSERT_UPDATE));
-
         // 代码生成器
         AutoGenerator mpg = new AutoGenerator().setGlobalConfig(
             // 全局配置
@@ -111,8 +107,8 @@ public class MysqlGenerator extends GeneratorTest {
                 // 自定义实体父类
                 // .setSuperEntityClass("com.baomidou.demo.TestEntity")
                 // 自定义实体,公共字段
-                .setSuperEntityColumns(new String[]{"test_id"})
-                .setTableFillList(tableFillList)
+                .setSuperEntityColumns("test_id")
+                .addTableFills(new TableFill("ASDD_SS", FieldFill.INSERT_UPDATE))
                 .setEntityBooleanColumnRemoveIsPrefix(true)
             // 自定义 mapper 父类
             // .setSuperMapperClass("com.baomidou.demo.TestMapper")

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

@@ -15,11 +15,15 @@
  */
 package com.baomidou.mybatisplus.test.generator;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Set;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.generator.config.po.TableFill;
 import lombok.Data;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -111,6 +115,19 @@ class StrategyConfigTest {
         Assertions.assertTrue(strategyConfig.startsWithTablePrefix("t_name"));
     }
 
+    @Test
+    void addTableFillsTest() {
+        TableFill tableFill = new TableFill("test", FieldFill.INSERT);
+        List<TableFill> tableFillList = new ArrayList<>();
+        tableFillList.add(tableFill);
+        StrategyConfig strategyConfig = new StrategyConfig();
+        strategyConfig.setTableFillList(tableFillList);
+        Assertions.assertFalse(strategyConfig.getTableFillList().isEmpty());
+        strategyConfig = new StrategyConfig();
+        strategyConfig.addTableFills(tableFill);
+        Assertions.assertFalse(strategyConfig.getTableFillList().isEmpty());
+    }
+
     @Data
     static class SuperBean {