Selaa lähdekoodia

处理内置Json处理器泛型信息.

nieqiurong 1 vuosi sitten
vanhempi
commit
d6646876e4

+ 1 - 4
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/Fastjson2TypeHandler.java

@@ -34,20 +34,17 @@ import org.apache.ibatis.type.MappedTypes;
 @MappedJdbcTypes(JdbcType.VARCHAR)
 public class Fastjson2TypeHandler extends AbstractJsonTypeHandler<Object> {
 
-    private final Class<?> type;
-
     public Fastjson2TypeHandler(Class<?> type) {
         if (log.isTraceEnabled()) {
             log.trace("Fastjson2TypeHandler(" + type + ")");
         }
         Assert.notNull(type, "Type argument cannot be null");
-        this.type = type;
     }
 
 
     @Override
     public Object parse(String json) {
-        return JSON.parseObject(json, this.type);
+        return JSON.parseObject(json, this.genericType);
     }
 
     @Override

+ 1 - 3
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/FastjsonTypeHandler.java

@@ -33,19 +33,17 @@ import org.apache.ibatis.type.MappedTypes;
 @MappedTypes({Object.class})
 @MappedJdbcTypes(JdbcType.VARCHAR)
 public class FastjsonTypeHandler extends AbstractJsonTypeHandler<Object> {
-    private final Class<?> type;
 
     public FastjsonTypeHandler(Class<?> type) {
         if (log.isTraceEnabled()) {
             log.trace("FastjsonTypeHandler(" + type + ")");
         }
         Assert.notNull(type, "Type argument cannot be null");
-        this.type = type;
     }
 
     @Override
     public Object parse(String json) {
-        return JSON.parseObject(json, type);
+        return JSON.parseObject(json, genericType);
     }
 
     @Override

+ 2 - 3
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/GsonTypeHandler.java

@@ -32,20 +32,19 @@ import org.apache.ibatis.type.MappedTypes;
 @MappedTypes({Object.class})
 @MappedJdbcTypes(JdbcType.VARCHAR)
 public class GsonTypeHandler extends AbstractJsonTypeHandler<Object> {
+
     private static Gson GSON;
-    private final Class<?> type;
 
     public GsonTypeHandler(Class<?> type) {
         if (log.isTraceEnabled()) {
             log.trace("GsonTypeHandler(" + type + ")");
         }
         Assert.notNull(type, "Type argument cannot be null");
-        this.type = type;
     }
 
     @Override
     public Object parse(String json) {
-        return getGson().fromJson(json, type);
+        return getGson().fromJson(json, this.genericType);
     }
 
     @Override

+ 7 - 22
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/JacksonTypeHandler.java

@@ -26,8 +26,6 @@ import org.apache.ibatis.type.MappedTypes;
 
 import java.io.IOException;
 import java.lang.reflect.Type;
-import java.util.List;
-import java.util.Map;
 
 /**
  * Jackson 实现 JSON 字段类型处理器
@@ -39,38 +37,25 @@ import java.util.Map;
 @MappedTypes({Object.class})
 @MappedJdbcTypes(JdbcType.VARCHAR)
 public class JacksonTypeHandler extends AbstractJsonTypeHandler<Object> {
+
     private static ObjectMapper OBJECT_MAPPER;
-    private final Class<?> type;
 
     public JacksonTypeHandler(Class<?> type) {
         if (log.isTraceEnabled()) {
             log.trace("JacksonTypeHandler(" + type + ")");
         }
         Assert.notNull(type, "Type argument cannot be null");
-        this.type = type;
     }
 
     @Override
     public Object parse(String json) {
         try {
-            if (List.class.isAssignableFrom(this.type)) {
-                return getObjectMapper().readValue(json, new TypeReference<Object>() {
-                    @Override
-                    public Type getType() {
-                        return genericType;
-                    }
-                });
-            } else if (Map.class.isAssignableFrom(this.type)) {
-                return getObjectMapper().readValue(json, new TypeReference<Map<?, ?>>() {
-                    @Override
-                    public Type getType() {
-                        return genericType;
-                    }
-                });
-            } else {
-                return getObjectMapper().readValue(json, this.type);
-            }
-
+            return getObjectMapper().readValue(json, new TypeReference<Object>() {
+                @Override
+                public Type getType() {
+                    return genericType;
+                }
+            });
         } catch (IOException e) {
             throw new RuntimeException(e);
         }

+ 3 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/json/JsonEntity.java

@@ -4,6 +4,9 @@ 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;