瀏覽代碼

支持 TableField FieldStrategy 注解全局配置

= 8 年之前
父節點
當前提交
15895ac6cd

+ 9 - 0
mybatis-plus/src/main/java/com/baomidou/mybatisplus/MybatisConfiguration.java

@@ -15,6 +15,7 @@
  */
 package com.baomidou.mybatisplus;
 
+import com.baomidou.mybatisplus.annotations.FieldStrategy;
 import com.baomidou.mybatisplus.mapper.AutoSqlInjector;
 import com.baomidou.mybatisplus.mapper.DBType;
 import com.baomidou.mybatisplus.mapper.IMetaObjectHandler;
@@ -57,19 +58,27 @@ public class MybatisConfiguration extends Configuration {
 	 * SQL 注入器,实现 ISqlInjector 或继承 AutoSqlInjector 自定义方法
 	 */
 	public static ISqlInjector SQL_INJECTOR = new AutoSqlInjector();
+
 	/*
 	 * Mapper 注册
 	 */
 	public final MybatisMapperRegistry mybatisMapperRegistry = new MybatisMapperRegistry(this);
+
 	/**
 	 * 缓存注册标识
 	 */
 	public static Set<String> MAPPER_REGISTRY_CACHE = new ConcurrentSkipListSet<String>();
+
 	/*
 	 * 元对象字段填充控制器
 	 */
 	public static IMetaObjectHandler META_OBJECT_HANDLER = null;
 
+	/*
+	 * 字段验证策略
+	 */
+	public static FieldStrategy FIELD_STRATEGY = FieldStrategy.NOT_NULL;
+
 	/*
 	 * 是否刷新mapper
 	 */

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

@@ -25,6 +25,7 @@ import org.apache.ibatis.executor.ErrorContext;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
+import com.baomidou.mybatisplus.annotations.FieldStrategy;
 import com.baomidou.mybatisplus.mapper.DBType;
 import com.baomidou.mybatisplus.mapper.IMetaObjectHandler;
 import com.baomidou.mybatisplus.mapper.ISqlInjector;
@@ -92,4 +93,10 @@ public class MybatisSessionFactoryBuilder extends SqlSessionFactoryBuilder {
 	public void setMetaObjectHandler(IMetaObjectHandler metaObjectHandler) {
 		MybatisConfiguration.META_OBJECT_HANDLER = metaObjectHandler;
 	}
+
+	// TODO 注入 元对象字段填充控制器
+	public void setFieldStrategy(int key) {
+		MybatisConfiguration.FIELD_STRATEGY = FieldStrategy.getFieldStrategy(key);
+	}
+
 }

+ 10 - 0
mybatis-plus/src/main/java/com/baomidou/mybatisplus/annotations/FieldStrategy.java

@@ -45,4 +45,14 @@ public enum FieldStrategy {
 		return this.desc;
 	}
 
+	public static FieldStrategy getFieldStrategy(int key) {
+		FieldStrategy[] fss = FieldStrategy.values();
+		for (FieldStrategy fs : fss) {
+			if (fs.getKey() == key) {
+				return fs;
+			}
+		}
+		return FieldStrategy.NOT_NULL;
+	}
+
 }

+ 6 - 0
mybatis-plus/src/main/java/com/baomidou/mybatisplus/spring/MybatisSqlSessionFactoryBean.java

@@ -18,6 +18,7 @@ package com.baomidou.mybatisplus.spring;
 import com.baomidou.mybatisplus.MybatisConfiguration;
 import com.baomidou.mybatisplus.MybatisXMLConfigBuilder;
 import com.baomidou.mybatisplus.MybatisXMLMapperBuilder;
+import com.baomidou.mybatisplus.annotations.FieldStrategy;
 import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
 import com.baomidou.mybatisplus.mapper.DBType;
 import com.baomidou.mybatisplus.mapper.IMetaObjectHandler;
@@ -138,6 +139,11 @@ public class MybatisSqlSessionFactoryBean
 		MybatisConfiguration.META_OBJECT_HANDLER = metaObjectHandler;
 	}
 
+	// TODO 注入 元对象字段填充控制器
+	public void setFieldStrategy(int key) {
+		MybatisConfiguration.FIELD_STRATEGY = FieldStrategy.getFieldStrategy(key);
+	}
+
 	/**
 	 * Sets the ObjectFactory.
 	 *

+ 9 - 1
mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/TableFieldInfo.java

@@ -15,6 +15,7 @@
  */
 package com.baomidou.mybatisplus.toolkit;
 
+import com.baomidou.mybatisplus.MybatisConfiguration;
 import com.baomidou.mybatisplus.annotations.FieldStrategy;
 
 /**
@@ -60,7 +61,14 @@ public class TableFieldInfo {
 		this.setColumn(column);
 		this.property = property;
 		this.el = el;
-		this.fieldStrategy = fieldStrategy;
+		/*
+		 * 优先使用单个字段注解,否则使用全局配置
+		 */
+		if (fieldStrategy != FieldStrategy.NOT_NULL) {
+			this.fieldStrategy = fieldStrategy;
+		} else {
+			this.fieldStrategy = MybatisConfiguration.FIELD_STRATEGY;
+		}
 	}
 
 	public TableFieldInfo(boolean related, String column, String property) {