Browse Source

增加Json处理器单元测试用例.

nieqiurong 1 year ago
parent
commit
db9be84789

+ 20 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/handlers/IJsonTypeHandler.java

@@ -15,20 +15,40 @@
  */
 package com.baomidou.mybatisplus.core.handlers;
 
+import com.baomidou.mybatisplus.annotation.TableName;
+
 import java.lang.reflect.Field;
 
 /**
  * Json类型处理器接口(实现类确保为多例状态).
  *
  * @author nieqiurong 2024年3月4日
+ * @see TableName#autoResultMap()
  * @since 3.5.6
  */
 public interface IJsonTypeHandler<T> {
 
+    /**
+     * 初始化处理器
+     *
+     * @param field 字段信息
+     */
     void init(Field field);
 
+    /**
+     * 反序列化json
+     *
+     * @param json json字符串
+     * @return T
+     */
     T parse(String json);
 
+    /**
+     * 序列化json
+     *
+     * @param obj 对象信息
+     * @return json字符串
+     */
     String toJson(Object obj);
 
 }

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

@@ -42,7 +42,6 @@ import org.apache.ibatis.type.TypeHandlerRegistry;
 import org.apache.ibatis.type.UnknownTypeHandler;
 
 import java.lang.reflect.Field;
-import java.lang.reflect.Type;
 import java.util.Map;
 
 /**
@@ -554,22 +553,22 @@ public class TableFieldInfo implements Constants {
      * @return ResultMapping
      */
     ResultMapping getResultMapping(final Configuration configuration) {
-        ResultMapping.Builder builder = new ResultMapping.Builder(configuration, property,
-            StringUtils.getTargetColumn(column), propertyType);
+        ResultMapping.Builder builder = new ResultMapping.Builder(configuration, this.property,
+            StringUtils.getTargetColumn(this.column), this.propertyType);
         TypeHandlerRegistry registry = configuration.getTypeHandlerRegistry();
-        if (jdbcType != null && jdbcType != JdbcType.UNDEFINED) {
-            builder.jdbcType(jdbcType);
+        if (this.jdbcType != null && this.jdbcType != JdbcType.UNDEFINED) {
+            builder.jdbcType(this.jdbcType);
         }
-        if (typeHandler != null && typeHandler != UnknownTypeHandler.class) {
+        if (this.typeHandler != null && this.typeHandler != UnknownTypeHandler.class) {
             TypeHandler<?> typeHandler = registry.getMappingTypeHandler(this.typeHandler);
             if (IJsonTypeHandler.class.isAssignableFrom(this.typeHandler)) {
                 // 保证每次实例化
-                typeHandler = registry.getInstance(propertyType, this.typeHandler);
+                typeHandler = registry.getInstance(this.propertyType, this.typeHandler);
                 IJsonTypeHandler<?> jsonTypeHandler = (IJsonTypeHandler<?>) typeHandler;
                 jsonTypeHandler.init(this.field);
             } else {
                 if (typeHandler == null) {
-                    typeHandler = registry.getInstance(propertyType, this.typeHandler);
+                    typeHandler = registry.getInstance(this.propertyType, this.typeHandler);
                 }
             }
             builder.typeHandler(typeHandler);

+ 67 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/FastJson2Entity.java

@@ -0,0 +1,67 @@
+package com.baomidou.mybatisplus.test.json;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author nieqiurong 2024年3月4日
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName(value = "t_fastjson2_entity", autoResultMap = true)
+public class FastJson2Entity {
+
+    @TableId(type = IdType.INPUT)
+    private String id;
+
+    private String name;
+
+    @TableField(typeHandler = Fastjson2TypeHandler.class)
+    private Card card;
+
+    @TableField(typeHandler = Fastjson2TypeHandler.class)
+    private List<Attr> attr;
+
+    @TableField(typeHandler = Fastjson2TypeHandler.class)
+    private Map<String, Attr> attr2;
+
+    @TableField(typeHandler = Fastjson2TypeHandler.class)
+    private Map<String, String> attr3;
+
+    @TableField(typeHandler = Fastjson2TypeHandler.class)
+    private Map<String, Object> attr4;
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class Attr {
+
+        private String name;
+
+        private String value;
+
+    }
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class Card {
+
+        private String id;
+
+        private String value;
+
+    }
+
+
+}

+ 10 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/FastJson2EntityMapper.java

@@ -0,0 +1,10 @@
+package com.baomidou.mybatisplus.test.json;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @author nieqiurong 2024年3月4日
+ */
+public interface FastJson2EntityMapper extends BaseMapper<FastJson2Entity> {
+
+}

+ 67 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/FastJsonEntity.java

@@ -0,0 +1,67 @@
+package com.baomidou.mybatisplus.test.json;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author nieqiurong 2024年3月4日
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName(value = "t_fastjson_entity", autoResultMap = true)
+public class FastJsonEntity {
+
+    @TableId(type = IdType.INPUT)
+    private String id;
+
+    private String name;
+
+    @TableField(typeHandler = FastjsonTypeHandler.class)
+    private Card card;
+
+    @TableField(typeHandler = FastjsonTypeHandler.class)
+    private List<Attr> attr;
+
+    @TableField(typeHandler = FastjsonTypeHandler.class)
+    private Map<String, Attr> attr2;
+
+    @TableField(typeHandler = FastjsonTypeHandler.class)
+    private Map<String, String> attr3;
+
+    @TableField(typeHandler = FastjsonTypeHandler.class)
+    private Map<String, Object> attr4;
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class Attr {
+
+        private String name;
+
+        private String value;
+
+    }
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class Card {
+
+        private String id;
+
+        private String value;
+
+    }
+
+
+}

+ 10 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/FastJsonEntityMapper.java

@@ -0,0 +1,10 @@
+package com.baomidou.mybatisplus.test.json;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @author nieqiurong 2024年3月4日
+ */
+public interface FastJsonEntityMapper extends BaseMapper<FastJsonEntity> {
+
+}

+ 56 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/Fastjson2Test.java

@@ -0,0 +1,56 @@
+package com.baomidou.mybatisplus.test.json;
+
+import com.baomidou.mybatisplus.test.BaseDbTest;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author nieqiurong 2024年3月4日
+ */
+public class Fastjson2Test extends BaseDbTest<FastJson2EntityMapper> {
+
+    @Override
+    protected List<String> tableSql() {
+        return Arrays.asList("drop table if exists t_fastjson2_entity", "CREATE TABLE IF NOT EXISTS t_fastjson2_entity (" +
+            "id VARCHAR(32) NOT NULL," +
+            "name VARCHAR(30) NULL DEFAULT NULL," +
+            "card VARCHAR(255) NULL DEFAULT NULL," +
+            "attr VARCHAR(255) NULL DEFAULT NULL," +
+            "attr2 VARCHAR(255) NULL DEFAULT NULL," +
+            "attr3 VARCHAR(255) NULL DEFAULT NULL," +
+            "attr4 VARCHAR(255) NULL DEFAULT NULL," +
+            "PRIMARY KEY (id))");
+    }
+
+    @Test
+    void test() {
+        doTest(mapper -> {
+            var entity = new FastJson2Entity("123", "秋秋", new FastJson2Entity.Card("1", "1111"),
+                Arrays.asList(new FastJson2Entity.Attr("age", "18"), new FastJson2Entity.Attr("sex", "女")),
+                new HashMap<>(Map.of("test", new FastJson2Entity.Attr("小红", "1"))),
+                new HashMap<>(Map.of("name", "1", "test2", "2")),
+                new HashMap<>(Map.of("test1", "1", "test2", 2))
+            );
+            mapper.insert(entity);
+            FastJson2Entity jackJsonEntity = mapper.selectById(entity.getId());
+            Assertions.assertEquals("秋秋", jackJsonEntity.getName());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr().size());
+            Assertions.assertNotNull(jackJsonEntity.getCard());
+            Assertions.assertEquals(1, jackJsonEntity.getAttr2().size());
+            Assertions.assertEquals("小红", jackJsonEntity.getAttr2().get("test").getName());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr3().size());
+            Assertions.assertEquals("1", jackJsonEntity.getAttr3().get("name"));
+            Assertions.assertEquals("2", jackJsonEntity.getAttr3().get("test2"));
+            Assertions.assertEquals(2, jackJsonEntity.getAttr4().size());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr4().get("test2"));
+        });
+
+    }
+
+
+}

+ 56 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/FastjsonTest.java

@@ -0,0 +1,56 @@
+package com.baomidou.mybatisplus.test.json;
+
+import com.baomidou.mybatisplus.test.BaseDbTest;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author nieqiurong 2024年3月4日
+ */
+public class FastjsonTest extends BaseDbTest<FastJsonEntityMapper> {
+
+    @Override
+    protected List<String> tableSql() {
+        return Arrays.asList("drop table if exists t_fastjson_entity", "CREATE TABLE IF NOT EXISTS t_fastjson_entity (" +
+            "id VARCHAR(32) NOT NULL," +
+            "name VARCHAR(30) NULL DEFAULT NULL," +
+            "card VARCHAR(255) NULL DEFAULT NULL," +
+            "attr VARCHAR(255) NULL DEFAULT NULL," +
+            "attr2 VARCHAR(255) NULL DEFAULT NULL," +
+            "attr3 VARCHAR(255) NULL DEFAULT NULL," +
+            "attr4 VARCHAR(255) NULL DEFAULT NULL," +
+            "PRIMARY KEY (id))");
+    }
+
+    @Test
+    void test() {
+        doTest(mapper -> {
+            var entity = new FastJsonEntity("123", "秋秋", new FastJsonEntity.Card("1", "1111"),
+                Arrays.asList(new FastJsonEntity.Attr("age", "18"), new FastJsonEntity.Attr("sex", "女")),
+                new HashMap<>(Map.of("test", new FastJsonEntity.Attr("小红", "1"))),
+                new HashMap<>(Map.of("name", "1", "test2", "2")),
+                new HashMap<>(Map.of("test1", "1", "test2", 2))
+            );
+            mapper.insert(entity);
+            FastJsonEntity jackJsonEntity = mapper.selectById(entity.getId());
+            Assertions.assertEquals("秋秋", jackJsonEntity.getName());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr().size());
+            Assertions.assertNotNull(jackJsonEntity.getCard());
+            Assertions.assertEquals(1, jackJsonEntity.getAttr2().size());
+            Assertions.assertEquals("小红", jackJsonEntity.getAttr2().get("test").getName());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr3().size());
+            Assertions.assertEquals("1", jackJsonEntity.getAttr3().get("name"));
+            Assertions.assertEquals("2", jackJsonEntity.getAttr3().get("test2"));
+            Assertions.assertEquals(2, jackJsonEntity.getAttr4().size());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr4().get("test2"));
+        });
+
+    }
+
+
+}

+ 67 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/GsonEntity.java

@@ -0,0 +1,67 @@
+package com.baomidou.mybatisplus.test.json;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.GsonTypeHandler;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author nieqiurong 2024年3月4日
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName(value = "t_gson_entity", autoResultMap = true)
+public class GsonEntity {
+
+    @TableId(type = IdType.INPUT)
+    private String id;
+
+    private String name;
+
+    @TableField(typeHandler = GsonTypeHandler.class)
+    private Card card;
+
+    @TableField(typeHandler = GsonTypeHandler.class)
+    private List<Attr> attr;
+
+    @TableField(typeHandler = GsonTypeHandler.class)
+    private Map<String, Attr> attr2;
+
+    @TableField(typeHandler = GsonTypeHandler.class)
+    private Map<String, String> attr3;
+
+    @TableField(typeHandler = GsonTypeHandler.class)
+    private Map<String, Object> attr4;
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class Attr {
+
+        private String name;
+
+        private String value;
+
+    }
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class Card {
+
+        private String id;
+
+        private String value;
+
+    }
+
+
+}

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/JsonEntityMapper.java → mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/GsonEntityMapper.java

@@ -5,6 +5,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 /**
  * @author nieqiurong 2024年3月4日
  */
-public interface JsonEntityMapper extends BaseMapper<JsonEntity> {
+public interface GsonEntityMapper extends BaseMapper<GsonEntity> {
 
 }

+ 57 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/GsonTest.java

@@ -0,0 +1,57 @@
+package com.baomidou.mybatisplus.test.json;
+
+import com.baomidou.mybatisplus.test.BaseDbTest;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author nieqiurong 2024年3月4日
+ */
+public class GsonTest extends BaseDbTest<GsonEntityMapper> {
+
+    @Override
+    protected List<String> tableSql() {
+        return Arrays.asList("drop table if exists t_gson_entity", "CREATE TABLE IF NOT EXISTS t_gson_entity (" +
+            "id VARCHAR(32) NOT NULL," +
+            "name VARCHAR(30) NULL DEFAULT NULL," +
+            "card VARCHAR(255) NULL DEFAULT NULL," +
+            "attr VARCHAR(255) NULL DEFAULT NULL," +
+            "attr2 VARCHAR(255) NULL DEFAULT NULL," +
+            "attr3 VARCHAR(255) NULL DEFAULT NULL," +
+            "attr4 VARCHAR(255) NULL DEFAULT NULL," +
+            "PRIMARY KEY (id))");
+    }
+
+    @Test
+    void test() {
+        doTest(mapper -> {
+            var entity = new GsonEntity("123", "秋秋", new GsonEntity.Card("1", "1111"),
+                Arrays.asList(new GsonEntity.Attr("age", "18"), new GsonEntity.Attr("sex", "女")),
+                new HashMap<>(Map.of("test", new GsonEntity.Attr("小红", "1"))),
+                new HashMap<>(Map.of("name", "1", "test2", "2")),
+                new HashMap<>(Map.of("test1", "1", "test2", 2))
+            );
+            mapper.insert(entity);
+            GsonEntity jackJsonEntity = mapper.selectById(entity.getId());
+            Assertions.assertEquals("秋秋", jackJsonEntity.getName());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr().size());
+            Assertions.assertNotNull(jackJsonEntity.getCard());
+            Assertions.assertEquals(1, jackJsonEntity.getAttr2().size());
+            Assertions.assertEquals("小红", jackJsonEntity.getAttr2().get("test").getName());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr3().size());
+            Assertions.assertEquals("1", jackJsonEntity.getAttr3().get("name"));
+            Assertions.assertEquals("2", jackJsonEntity.getAttr3().get("test2"));
+            Assertions.assertEquals(2, jackJsonEntity.getAttr4().size());
+            //TODO 反序列化精度问题
+            Assertions.assertEquals(2.0, jackJsonEntity.getAttr4().get("test2"));
+        });
+
+    }
+
+
+}

+ 2 - 5
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/JsonEntity.java → mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/JackJsonEntity.java

@@ -4,9 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler;
-import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
-import com.baomidou.mybatisplus.extension.handlers.GsonTypeHandler;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -21,8 +18,8 @@ import java.util.Map;
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-@TableName(value = "t_json_entity", autoResultMap = true)
-public class JsonEntity {
+@TableName(value = "t_jackson_entity", autoResultMap = true)
+public class JackJsonEntity {
 
     @TableId(type = IdType.INPUT)
     private String id;

+ 10 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/JackJsonEntityMapper.java

@@ -0,0 +1,10 @@
+package com.baomidou.mybatisplus.test.json;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @author nieqiurong 2024年3月4日
+ */
+public interface JackJsonEntityMapper extends BaseMapper<JackJsonEntity> {
+
+}

+ 56 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/JacksonTest.java

@@ -0,0 +1,56 @@
+package com.baomidou.mybatisplus.test.json;
+
+import com.baomidou.mybatisplus.test.BaseDbTest;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author nieqiurong 2024年3月4日
+ */
+public class JacksonTest extends BaseDbTest<JackJsonEntityMapper> {
+
+    @Override
+    protected List<String> tableSql() {
+        return Arrays.asList("drop table if exists t_jackson_entity", "CREATE TABLE IF NOT EXISTS t_jackson_entity (" +
+            "id VARCHAR(32) NOT NULL," +
+            "name VARCHAR(30) NULL DEFAULT NULL," +
+            "card VARCHAR(255) NULL DEFAULT NULL," +
+            "attr VARCHAR(255) NULL DEFAULT NULL," +
+            "attr2 VARCHAR(255) NULL DEFAULT NULL," +
+            "attr3 VARCHAR(255) NULL DEFAULT NULL," +
+            "attr4 VARCHAR(255) NULL DEFAULT NULL," +
+            "PRIMARY KEY (id))");
+    }
+
+    @Test
+    void test() {
+        doTest(mapper -> {
+            var entity = new JackJsonEntity("123", "秋秋", new JackJsonEntity.Card("1", "1111"),
+                Arrays.asList(new JackJsonEntity.Attr("age", "18"), new JackJsonEntity.Attr("sex", "女")),
+                new HashMap<>(Map.of("test", new JackJsonEntity.Attr("小红", "1"))),
+                new HashMap<>(Map.of("name", "1", "test2", "2")),
+                new HashMap<>(Map.of("test1", "1", "test2", 2))
+            );
+            mapper.insert(entity);
+            JackJsonEntity jackJsonEntity = mapper.selectById(entity.getId());
+            Assertions.assertEquals("秋秋", jackJsonEntity.getName());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr().size());
+            Assertions.assertNotNull(jackJsonEntity.getCard());
+            Assertions.assertEquals(1, jackJsonEntity.getAttr2().size());
+            Assertions.assertEquals("小红", jackJsonEntity.getAttr2().get("test").getName());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr3().size());
+            Assertions.assertEquals("1", jackJsonEntity.getAttr3().get("name"));
+            Assertions.assertEquals("2", jackJsonEntity.getAttr3().get("test2"));
+            Assertions.assertEquals(2, jackJsonEntity.getAttr4().size());
+            Assertions.assertEquals(2, jackJsonEntity.getAttr4().get("test2"));
+        });
+
+    }
+
+
+}

+ 0 - 57
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/JsonTest.java

@@ -1,57 +0,0 @@
-package com.baomidou.mybatisplus.test.json;
-
-import com.baomidou.mybatisplus.test.BaseDbTest;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- *
- * @author nieqiurong 2024年3月4日
- */
-public class JsonTest extends BaseDbTest<JsonEntityMapper> {
-
-    @Override
-    protected List<String> tableSql() {
-        return Arrays.asList("drop table if exists t_json_entity", "CREATE TABLE IF NOT EXISTS t_json_entity (" +
-            "id VARCHAR(32) NOT NULL," +
-            "name VARCHAR(30) NULL DEFAULT NULL," +
-            "card VARCHAR(255) NULL DEFAULT NULL," +
-            "attr VARCHAR(255) NULL DEFAULT NULL," +
-            "attr2 VARCHAR(255) NULL DEFAULT NULL," +
-            "attr3 VARCHAR(255) NULL DEFAULT NULL," +
-            "attr4 VARCHAR(255) NULL DEFAULT NULL," +
-            "PRIMARY KEY (id))");
-    }
-
-
-    @Test
-    void test() {
-        doTest(mapper -> {
-            var entity = new JsonEntity("123", "秋秋", new JsonEntity.Card("1", "1111"),
-                Arrays.asList(new JsonEntity.Attr("age", "18"), new JsonEntity.Attr("sex", "女")),
-                new HashMap<>(Map.of("test", new JsonEntity.Attr("小红", "1"))),
-                new HashMap<>(Map.of("name", "1", "test2", "2")),
-                new HashMap<>(Map.of("test1", "1", "test2", 2))
-            );
-            mapper.insert(entity);
-            JsonEntity jsonEntity = mapper.selectById(entity.getId());
-            Assertions.assertEquals("秋秋", jsonEntity.getName());
-            Assertions.assertEquals(2, jsonEntity.getAttr().size());
-            Assertions.assertNotNull(jsonEntity.getCard());
-            Assertions.assertEquals(1, jsonEntity.getAttr2().size());
-            Assertions.assertEquals("小红", jsonEntity.getAttr2().get("test").getName());
-            Assertions.assertEquals(2, jsonEntity.getAttr3().size());
-            Assertions.assertEquals("1", jsonEntity.getAttr3().get("name"));
-            Assertions.assertEquals("2", jsonEntity.getAttr3().get("test2"));
-            Assertions.assertEquals(2, jsonEntity.getAttr4().size());
-            Assertions.assertEquals(2, jsonEntity.getAttr4().get("test2"));
-        });
-    }
-
-
-}