Просмотр исходного кода

!157 feat GlobalConfig增加whereStrategy属性和适配selectStrategy的getWhereStrategy()方法
Merge pull request !157 from keep/temp_dev2

青苗 4 лет назад
Родитель
Сommit
33efd32b4f

+ 25 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/config/GlobalConfig.java

@@ -17,6 +17,7 @@ package com.baomidou.mybatisplus.core.config;
 
 
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
 import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
@@ -185,11 +186,34 @@ public class GlobalConfig implements Serializable {
          * @since 3.1.2
          * @since 3.1.2
          */
          */
         private FieldStrategy updateStrategy = FieldStrategy.NOT_NULL;
         private FieldStrategy updateStrategy = FieldStrategy.NOT_NULL;
+
         /**
         /**
          * 字段验证策略之 select
          * 字段验证策略之 select
          *
          *
          * @since 3.1.2
          * @since 3.1.2
+         * @deprecated 3.4.4
+         */
+        @Deprecated
+        private FieldStrategy selectStrategy;
+
+        /**
+         * 字段验证策略之 where
+         * 替代selectStrategy,保持与{@link TableField#whereStrategy()}一致
+         *
+         * @since 3.4.4
+         */
+        private FieldStrategy whereStrategy = FieldStrategy.NOT_NULL;
+
+        /**
+         * 重写whereStrategy的get方法,适配低版本:
+         * - 如果用户自定义了selectStrategy则用用户自定义的,
+         * - 后续版本移除selectStrategy后,直接删除该方法即可。
+         *
+         * @return 字段作为查询条件时的验证策略
+         * @since 3.4.4
          */
          */
-        private FieldStrategy selectStrategy = FieldStrategy.NOT_NULL;
+        public FieldStrategy getWhereStrategy() {
+            return selectStrategy == null ? whereStrategy : selectStrategy;
+        }
     }
     }
 }
 }

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

@@ -280,7 +280,7 @@ public class TableFieldInfo implements Constants {
 
 
         this.insertStrategy = this.chooseFieldStrategy(tableField.insertStrategy(), dbConfig.getInsertStrategy());
         this.insertStrategy = this.chooseFieldStrategy(tableField.insertStrategy(), dbConfig.getInsertStrategy());
         this.updateStrategy = this.chooseFieldStrategy(tableField.updateStrategy(), dbConfig.getUpdateStrategy());
         this.updateStrategy = this.chooseFieldStrategy(tableField.updateStrategy(), dbConfig.getUpdateStrategy());
-        this.whereStrategy = this.chooseFieldStrategy(tableField.whereStrategy(), dbConfig.getSelectStrategy());
+        this.whereStrategy = this.chooseFieldStrategy(tableField.whereStrategy(), dbConfig.getWhereStrategy());
 
 
         if (StringUtils.isNotBlank(tableField.condition())) {
         if (StringUtils.isNotBlank(tableField.condition())) {
             // 细粒度条件控制
             // 细粒度条件控制
@@ -326,7 +326,7 @@ public class TableFieldInfo implements Constants {
         this.mapping = null;
         this.mapping = null;
         this.insertStrategy = dbConfig.getInsertStrategy();
         this.insertStrategy = dbConfig.getInsertStrategy();
         this.updateStrategy = dbConfig.getUpdateStrategy();
         this.updateStrategy = dbConfig.getUpdateStrategy();
-        this.whereStrategy = dbConfig.getSelectStrategy();
+        this.whereStrategy = dbConfig.getWhereStrategy();
         this.initLogicDelete(dbConfig, field, existTableLogic);
         this.initLogicDelete(dbConfig, field, existTableLogic);
 
 
         String column = this.property;
         String column = this.property;