ソースを参照

支持 TableField select 属性 false 排除默认注入大字段查询

hubin 6 年 前
コミット
b24f086a2c

+ 7 - 0
mybatis-plus-annotation/src/main/java/com/baomidou/mybatisplus/annotation/TableField.java

@@ -104,4 +104,11 @@ public @interface TableField {
      * </p>
      * </p>
      */
      */
     FieldFill fill() default FieldFill.DEFAULT;
     FieldFill fill() default FieldFill.DEFAULT;
+
+    /**
+     * 是否进行 select 查询
+     * 大字段可设置为 false 不加入 select 查询范围
+     */
+    boolean select() default true;
+
 }
 }

+ 21 - 15
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractMethod.java

@@ -15,14 +15,13 @@
  */
  */
 package com.baomidou.mybatisplus.core.injector;
 package com.baomidou.mybatisplus.core.injector;
 
 
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.core.config.GlobalConfig;
-import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
-import com.baomidou.mybatisplus.core.metadata.TableInfo;
-import com.baomidou.mybatisplus.core.parser.SqlParserHelper;
-import com.baomidou.mybatisplus.core.toolkit.*;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.lang.reflect.WildcardType;
+import java.util.List;
+import java.util.stream.Collectors;
+
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.executor.keygen.KeyGenerator;
 import org.apache.ibatis.executor.keygen.KeyGenerator;
 import org.apache.ibatis.executor.keygen.NoKeyGenerator;
 import org.apache.ibatis.executor.keygen.NoKeyGenerator;
@@ -33,12 +32,19 @@ import org.apache.ibatis.mapping.StatementType;
 import org.apache.ibatis.scripting.LanguageDriver;
 import org.apache.ibatis.scripting.LanguageDriver;
 import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.Configuration;
 
 
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.lang.reflect.WildcardType;
-import java.util.List;
-import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import com.baomidou.mybatisplus.core.parser.SqlParserHelper;
+import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -260,7 +266,7 @@ public abstract class AbstractMethod {
 
 
             if (size >= 1) {
             if (size >= 1) {
                 // 字段处理
                 // 字段处理
-                columns.append(fieldList.stream().map(i -> {
+                columns.append(fieldList.stream().filter(i -> i.isSelect()).map(i -> {
                     String v = sqlWordConvert(dbType, i.getColumn(), true);
                     String v = sqlWordConvert(dbType, i.getColumn(), true);
                     if (i.isRelated()) {
                     if (i.isRelated()) {
                         v += (" AS " + sqlWordConvert(dbType, i.getProperty(), false));
                         v += (" AS " + sqlWordConvert(dbType, i.getProperty(), false));

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

@@ -15,15 +15,20 @@
  */
  */
 package com.baomidou.mybatisplus.core.metadata;
 package com.baomidou.mybatisplus.core.metadata;
 
 
-import com.baomidou.mybatisplus.annotation.*;
+import java.lang.reflect.Field;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.SqlCondition;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
 import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
+
 import lombok.Data;
 import lombok.Data;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
 
 
-import java.lang.reflect.Field;
-
 /**
 /**
  * <p>
  * <p>
  * 数据库表字段反射信息
  * 数据库表字段反射信息
@@ -40,7 +45,12 @@ public class TableFieldInfo {
      * 是否有存在字段名与属性名关联
      * 是否有存在字段名与属性名关联
      * true: 表示要进行 as
      * true: 表示要进行 as
      */
      */
-    private boolean related = false;
+    private boolean related;
+    /**
+     * 是否进行 select 查询
+     * 大字段可设置为 false 不加入 select 查询范围
+     */
+    private boolean select = true;
     /**
     /**
      * 字段名
      * 字段名
      */
      */
@@ -125,6 +135,9 @@ public class TableFieldInfo {
             // 全局配置
             // 全局配置
             this.setCondition(dbConfig);
             this.setCondition(dbConfig);
         }
         }
+
+        // 字段是否注入查询
+        this.select = tableField.select();
     }
     }
 
 
     public TableFieldInfo(GlobalConfig.DbConfig dbConfig, TableInfo tableInfo, Field field) {
     public TableFieldInfo(GlobalConfig.DbConfig dbConfig, TableInfo tableInfo, Field field) {

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/entity/mapper/H2UserMapper.java

@@ -56,7 +56,7 @@ public interface H2UserMapper extends SuperMapper<H2User> {
     int myInsertWithoutParam(H2User user1);
     int myInsertWithoutParam(H2User user1);
 
 
 
 
-    @Select(" select test_id as id, power(#{ageFrom},2), 'abc?zhazha', CAST(#{nameParam} AS VARCHAR) as name " +
+    @Select(" select test_id as testId, power(#{ageFrom},2), 'abc?zhazha', CAST(#{nameParam} AS VARCHAR) as name " +
         " from h2user " +
         " from h2user " +
         " where age>#{ageFrom} and age<#{ageTo} ")
         " where age>#{ageFrom} and age<#{ageTo} ")
     List<H2User> selectUserWithParamInSelectStatememt(Map<String, Object> param);
     List<H2User> selectUserWithParamInSelectStatememt(Map<String, Object> param);

+ 4 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/entity/persistent/H2User.java

@@ -55,7 +55,10 @@ public class H2User extends SuperEntity {
 
 
     private String desc;
     private String desc;
 
 
-    @TableField
+    /**
+     * 该注解 select 默认不注入 select 查询
+     */
+    @TableField(select = false)
     private Date testDate;
     private Date testDate;
 
 
     @Version
     @Version