瀏覽代碼

支持下划线字段填充

= 8 年之前
父節點
當前提交
763ce76cc2

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

@@ -24,7 +24,7 @@ package com.baomidou.mybatisplus.annotations;
  * @Date 2016-09-09
  */
 public enum FieldStrategy {
-	IGNORED(0, "ignored"), NOT_NULL(1, "not null"), NOT_EMPTY(2, "not empty");
+	IGNORED(0, "ignored"), NOT_NULL(1, "not null"), NOT_EMPTY(2, "not empty"), FILL(3, "field fill");
 
 	/** 主键 */
 	private final int key;

+ 19 - 5
mybatis-plus/src/main/java/com/baomidou/mybatisplus/mapper/AutoSqlInjector.java

@@ -196,14 +196,14 @@ public class AutoSqlInjector implements ISqlInjector {
 		List<TableFieldInfo> fieldList = table.getFieldList();
 		for (TableFieldInfo fieldInfo : fieldList) {
 			if (selective) {
-				fieldBuilder.append(convertIfTag(fieldInfo, false));
-				placeholderBuilder.append(convertIfTag(fieldInfo, false));
+				fieldBuilder.append(convertIfTagInsert(fieldInfo, false));
+				placeholderBuilder.append(convertIfTagInsert(fieldInfo, false));
 			}
 			fieldBuilder.append(fieldInfo.getColumn()).append(",");
 			placeholderBuilder.append("#{").append(fieldInfo.getEl()).append("},");
 			if (selective) {
-				fieldBuilder.append(convertIfTag(fieldInfo, true));
-				placeholderBuilder.append(convertIfTag(fieldInfo, true));
+				fieldBuilder.append(convertIfTagInsert(fieldInfo, true));
+				placeholderBuilder.append(convertIfTagInsert(fieldInfo, true));
 			}
 		}
 		fieldBuilder.append("\n</trim>");
@@ -643,6 +643,8 @@ public class AutoSqlInjector implements ISqlInjector {
 	 * IF 条件转换方法
 	 * </p>
 	 * 
+	 * @param sqlCommandType
+	 *            SQL 操作类型
 	 * @param fieldInfo
 	 *            字段信息
 	 * @param prefix
@@ -651,7 +653,8 @@ public class AutoSqlInjector implements ISqlInjector {
 	 *            是否闭合标签
 	 * @return
 	 */
-	protected String convertIfTag(TableFieldInfo fieldInfo, String prefix, boolean colse) {
+	protected String convertIfTag(SqlCommandType sqlCommandType, TableFieldInfo fieldInfo, String prefix,
+			boolean colse) {
 		/* 前缀处理 */
 		String property = fieldInfo.getProperty();
 		if (null != prefix) {
@@ -659,6 +662,9 @@ public class AutoSqlInjector implements ISqlInjector {
 		}
 
 		/* 判断策略 */
+		if (sqlCommandType == SqlCommandType.INSERT && fieldInfo.getFieldStrategy() == FieldStrategy.FILL) {
+			return "";
+		}
 		if (fieldInfo.getFieldStrategy() == FieldStrategy.NOT_NULL) {
 			if (colse) {
 				return "</if>";
@@ -674,6 +680,14 @@ public class AutoSqlInjector implements ISqlInjector {
 		}
 		return "";
 	}
+	
+	protected String convertIfTagInsert(TableFieldInfo fieldInfo, boolean colse) {
+		return convertIfTag(SqlCommandType.INSERT, fieldInfo, null, colse);
+	}
+
+	protected String convertIfTag(TableFieldInfo fieldInfo, String prefix, boolean colse) {
+		return convertIfTag(SqlCommandType.UNKNOWN, fieldInfo, prefix, colse);
+	}
 
 	protected String convertIfTag(TableFieldInfo fieldInfo, boolean colse) {
 		return convertIfTag(fieldInfo, null, colse);

+ 7 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/MyMetaObjectHandler.java

@@ -37,6 +37,13 @@ public class MyMetaObjectHandler implements IMetaObjectHandler {
 		if (null == name) {
 			metaObject.setValue("name", "instert-fill");
 		}
+
+		// 测试下划线
+		Object testType = metaObject.getValue("testType");
+		System.err.println("testTypetestType==" + testType);
+		if (null == testType) {
+			metaObject.setValue("testType", 3);
+		}
 	}
 
 }

+ 9 - 2
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/UserMapperTest.java

@@ -152,10 +152,12 @@ public class UserMapperTest {
         ul.add(new User(15L, "5", 5, 1));
         ul.add(new User(16L, "6", 6, 0));
 
-        /* 测试 name 填充 */
+        /* 测试 name test_type 填充 */
         ul.add(new User(17L, 7));
+        ul.add(new User(18L, 8));
+        ul.add(new User(19L, 9));
         ul.add(new User(7));
-        ul.add(new User(18L, "deleteByMap", 7, 0));
+        ul.add(new User(20L, "deleteByMap", 7, 0));
 
 		/* 使用 ID_WORKER 自动生成 ID */
         ul.add(new User("8", 8, 1));
@@ -163,6 +165,11 @@ public class UserMapperTest {
         rlt = userMapper.insertBatch(ul);
         System.err.println("\n--------------insertBatch----------------" + rlt + "\n\n");
 
+        /**
+         * 提交,往下操作在一个事物中!!!
+         */
+        session.commit();
+
         /*
          * 删除
          */

+ 2 - 2
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/entity/User.java

@@ -49,8 +49,8 @@ public class User implements Serializable {
 
 	private Integer age;
 
-	/* 测试下划线字段命名类型 */
-	@TableField(value = "test_type")
+	/* 测试下划线字段命名类型, 字段填充 */
+	@TableField(value = "test_type", validate = FieldStrategy.FILL)
 	private Integer testType;
 
 	@TableField(el = "role.id")