Browse Source

修改相应testcase
解决公共填充器在update时,实体没有的字段也塞了值的问题

yuxiaobin 7 years ago
parent
commit
25f3647d3a

+ 4 - 0
src/test/java/com/baomidou/mybatisplus/test/h2/H2MetaObjectHandler.java

@@ -43,6 +43,8 @@ public class H2MetaObjectHandler extends MetaObjectHandler {
         Object testType = this.getFieldValByName("testType", metaObject);
         System.out.println("testType=" + testType);
         if (testType == null) {
+            //测试实体没有的字段,配置在公共填充,不应该set到实体里面
+            this.setFieldValByName("testType1", 3, metaObject);
             this.setFieldValByName("testType", 3, metaObject);
         }
     }
@@ -52,6 +54,8 @@ public class H2MetaObjectHandler extends MetaObjectHandler {
         System.out.println("*************************");
         System.out.println("update fill");
         System.out.println("*************************");
+        //测试实体没有的字段,配置在公共填充,不应该set到实体里面
+        this.setFieldValByName("lastUpdatedDt1", new Timestamp(System.currentTimeMillis()), metaObject);
         this.setFieldValByName("lastUpdatedDt", new Timestamp(System.currentTimeMillis()), metaObject);
     }
 }

+ 23 - 0
src/test/java/com/baomidou/mybatisplus/test/h2/H2MetaObjectHandlerTest.java

@@ -66,6 +66,7 @@ public class H2MetaObjectHandlerTest extends H2Test {
         user.setDesc("abc");
         userMapper.insert(user);
         System.out.println("before update: getLastUpdatedDt=" + user.getLastUpdatedDt());
+        Assert.assertNotNull(userMapper.selectById(user.getId()).getTestType());
 
         user.setName("999");
         userMapper.updateById(user);
@@ -84,6 +85,28 @@ public class H2MetaObjectHandlerTest extends H2Test {
         Assert.assertEquals(sdf.format(new Date()), versionDateStr);//before update: lastUpdatedDt=currentTimestamp-1day
     }
 
+    @Test
+    public void testMetaObjectHandlerNullInsert4Update() {
+        H2UserMetaObj user = new H2UserMetaObj();
+        user.setName("metaobjtest");
+        user.setVersion(1);
+        user.setAge(12);
+        user.setDesc("abc");
+        userMapper.insert(user);
+        System.out.println("before update: getLastUpdatedDt=" + user.getLastUpdatedDt());
+        Assert.assertNotNull(userMapper.selectById(user.getId()).getTestType());
+        user.setName("999");
+        userMapper.updateById(user);
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
+        Long id = user.getId();
+        H2UserMetaObj userDB = userMapper.selectById(id);
+        Date lastUpdatedDt = userDB.getLastUpdatedDt();
+        System.out.println("after update: testDate=" + lastUpdatedDt);
+        String versionDateStr = sdf.format(lastUpdatedDt);
+        //MyMetaObjectHandler.updateFill() : set lastUpdatedDt=currentTimestamp
+        Assert.assertEquals(sdf.format(new Date()), versionDateStr);//before update: lastUpdatedDt=currentTimestamp-1day
+    }
+
 
     @Test
     public void testInsertMy() {