Bladeren bron

同步生成器代码.

nieqiurong 4 jaren geleden
bovenliggende
commit
77bf491728

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

+ 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) {
     protected void insertFill(MetaObject metaObject, TableInfo tableInfo) {
         GlobalConfigUtils.getMetaObjectHandler(this.configuration).ifPresent(metaObjectHandler -> {
         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;
         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

@@ -274,7 +274,6 @@ public class TableInfoHelper {
         /* 数据库全局配置 */
         /* 数据库全局配置 */
         GlobalConfig.DbConfig dbConfig = globalConfig.getDbConfig();
         GlobalConfig.DbConfig dbConfig = globalConfig.getDbConfig();
         ReflectorFactory reflectorFactory = tableInfo.getConfiguration().getReflectorFactory();
         ReflectorFactory reflectorFactory = tableInfo.getConfiguration().getReflectorFactory();
-        //TODO @咩咩 有空一起来撸完这反射模块.
         Reflector reflector = reflectorFactory.findForClass(clazz);
         Reflector reflector = reflectorFactory.findForClass(clazz);
         List<Field> list = getAllFields(clazz);
         List<Field> list = getAllFields(clazz);
         // 标记是否读取到主键
         // 标记是否读取到主键
@@ -490,7 +489,6 @@ public class TableInfoHelper {
             throw new IllegalArgumentException("not configure IKeyGenerator implementation class.");
             throw new IllegalArgumentException("not configure IKeyGenerator implementation class.");
         }
         }
         Configuration configuration = builderAssistant.getConfiguration();
         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;
         String id = builderAssistant.getCurrentNamespace() + StringPool.DOT + baseStatementId + SelectKeyGenerator.SELECT_KEY_SUFFIX;
         ResultMap resultMap = new ResultMap.Builder(builderAssistant.getConfiguration(), id, tableInfo.getKeyType(), new ArrayList<>()).build();
         ResultMap resultMap = new ResultMap.Builder(builderAssistant.getConfiguration(), id, tableInfo.getKeyType(), new ArrayList<>()).build();
         MappedStatement mappedStatement = new MappedStatement.Builder(builderAssistant.getConfiguration(), id,
         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;
         private String name;
 
 
+        @TableField(fill = FieldFill.INSERT)
         private String insertOperator;
         private String insertOperator;
 
 
         @TableField(fill = FieldFill.UPDATE)
         @TableField(fill = FieldFill.UPDATE)
@@ -65,12 +66,6 @@ class MybatisParameterHandlerTest {
         BoundSql boundSql = mock(BoundSql.class);
         BoundSql boundSql = mock(BoundSql.class);
         StaticSqlSource staticSqlSource = mock(StaticSqlSource.class);
         StaticSqlSource staticSqlSource = mock(StaticSqlSource.class);
         GlobalConfigUtils.getGlobalConfig(configuration).setIdentifierGenerator(new DefaultIdentifierGenerator()).setMetaObjectHandler(new MetaObjectHandler() {
         GlobalConfigUtils.getGlobalConfig(configuration).setIdentifierGenerator(new DefaultIdentifierGenerator()).setMetaObjectHandler(new MetaObjectHandler() {
-
-            @Override
-            public boolean compatibleFillId() {
-                return true;
-            }
-
             @Override
             @Override
             public void insertFill(MetaObject metaObject) {
             public void insertFill(MetaObject metaObject) {
                 setFieldValByName("id", 666L, metaObject);
                 setFieldValByName("id", 666L, metaObject);

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

@@ -83,7 +83,7 @@ public class ConfigBuilder {
     /**
     /**
      * 过滤正则
      * 过滤正则
      */
      */
-    private static final Pattern REGX = Pattern.compile("[~!/@#$%^&*()-_=+\\\\|[{}];:'\",<.>?]+");
+    private static final Pattern REGX = Pattern.compile("[~!/@#$%^&*()+\\\\\\[\\]|{};:'\",<.>?]+");
 
 
     /**
     /**
      * 在构造器中处理配置
      * 在构造器中处理配置
@@ -314,6 +314,8 @@ public class ConfigBuilder {
                     schema = "public";
                     schema = "public";
                     dataSourceConfig.setSchemaName(schema);
                     dataSourceConfig.setSchemaName(schema);
                 }
                 }
+                //TODO 还原代码后解决PgSchema的问题.
+                this.connection.setSchema(schema);
                 tablesSql = String.format(tablesSql, schema);
                 tablesSql = String.format(tablesSql, schema);
             } else if (DbType.KINGBASE_ES == dbType) {
             } else if (DbType.KINGBASE_ES == dbType) {
                 String schema = dataSourceConfig.getSchemaName();
                 String schema = dataSourceConfig.getSchemaName();
@@ -461,9 +463,7 @@ public class ConfigBuilder {
             String tableFieldsSql = dbQuery.tableFieldsSql();
             String tableFieldsSql = dbQuery.tableFieldsSql();
             Set<String> h2PkColumns = new HashSet<>();
             Set<String> h2PkColumns = new HashSet<>();
             if (DbType.POSTGRE_SQL == dbType) {
             if (DbType.POSTGRE_SQL == dbType) {
-                //TODO 还原代码后解决PgSchema的问题.
-                this.connection.setSchema(dataSourceConfig.getSchemaName());
-                tableFieldsSql = String.format(tableFieldsSql, dataSourceConfig.getSchemaName(), tableName);
+                tableFieldsSql = String.format(tableFieldsSql, tableName);
             } else if (DbType.KINGBASE_ES == dbType) {
             } else if (DbType.KINGBASE_ES == dbType) {
                 tableFieldsSql = String.format(tableFieldsSql, dataSourceConfig.getSchemaName(), tableName);
                 tableFieldsSql = String.format(tableFieldsSql, dataSourceConfig.getSchemaName(), tableName);
             } else if (DbType.DB2 == dbType) {
             } else if (DbType.DB2 == dbType) {