浏览代码

新增自增主键兼容配置开关.

nieqiurong 1 年之前
父节点
当前提交
bc679937b8

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

@@ -209,6 +209,14 @@ public class GlobalConfig implements Serializable {
          */
         private FieldStrategy whereStrategy = FieldStrategy.NOT_NULL;
 
+        /**
+         * 生成INSERT语句时忽略自增主键字段(默认不忽略,主键有值时写入主键值,无值自增).
+         * <p>当设置为true时,执行生成SQL语句无论ID是否有值都会忽视 (此为3.4.3.1版本下策略,如果升级遇到问题可以考虑开启此配置来兼容升级)</p>
+         *
+         * @since 3.5.6
+         */
+        private boolean insertIgnoreAutoIncrementColumn = false;
+
         /**
          * 重写whereStrategy的get方法,适配低版本:
          * - 如果用户自定义了selectStrategy则用用户自定义的,

+ 4 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/DefaultSqlInjector.java

@@ -15,8 +15,10 @@
  */
 package com.baomidou.mybatisplus.core.injector;
 
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.injector.methods.*;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 
 import java.util.List;
 import java.util.stream.Stream;
@@ -34,8 +36,9 @@ public class DefaultSqlInjector extends AbstractSqlInjector {
 
     @Override
     public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
+        GlobalConfig.DbConfig dbConfig = GlobalConfigUtils.getDbConfig(tableInfo.getConfiguration());
         Stream.Builder<AbstractMethod> builder = Stream.<AbstractMethod>builder()
-            .add(new Insert())
+            .add(new Insert(dbConfig.isInsertIgnoreAutoIncrementColumn()))
             .add(new Delete())
             .add(new Update())
             .add(new SelectCount())