Prechádzať zdrojové kódy

支持对象转json存储
@TableField(typeHandler = JacksonTypeHandler.class)

yucheng 3 rokov pred
rodič
commit
138246c5f7

+ 14 - 1
dc-common/src/main/java/com/persagy/dc/common/config/SpringCommonConfig.java

@@ -1,5 +1,9 @@
 package com.persagy.dc.common.config;
 
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
 import org.springframework.context.annotation.Configuration;
 
 /**
@@ -8,5 +12,14 @@ import org.springframework.context.annotation.Configuration;
  * @date 2021-06-02
  */
 @Configuration
-public class SpringCommonConfig {
+public class SpringCommonConfig implements CommandLineRunner {
+
+    @Autowired
+    private ObjectMapper objectMapper;
+
+    @Override
+    public void run(String... args) throws Exception {
+        // 注入objectMapper,处理Java对象转JsonString
+        JacksonTypeHandler.setObjectMapper(objectMapper);
+    }
 }

+ 5 - 0
dc-common/src/main/java/com/persagy/dc/common/serializer/PsDateSerializer.java

@@ -19,4 +19,9 @@ public class PsDateSerializer extends JsonSerializer<PsDate> {
     public void serialize(PsDate value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
         gen.writeNumber(value.getMillis());
     }
+
+    @Override
+    public Class<PsDate> handledType() {
+        return PsDate.class;
+    }
 }

+ 5 - 0
dc-common/src/main/java/com/persagy/dc/common/serializer/PsDateTimeSerializer.java

@@ -19,4 +19,9 @@ public class PsDateTimeSerializer extends JsonSerializer<PsDateTime> {
     public void serialize(PsDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
         gen.writeNumber(value.getMillis());
     }
+
+    @Override
+    public Class<PsDateTime> handledType() {
+        return PsDateTime.class;
+    }
 }

+ 5 - 0
dc-common/src/main/java/com/persagy/dc/common/serializer/PsTimeSerializer.java

@@ -19,4 +19,9 @@ public class PsTimeSerializer extends JsonSerializer<PsTime> {
     public void serialize(PsTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
         gen.writeNumber(value.getMillis());
     }
+
+    @Override
+    public Class<PsTime> handledType() {
+        return PsTime.class;
+    }
 }

+ 0 - 46
dc-comp/dc-mybatis/src/main/java/com/persagy/dc/mybatis/handler/DbJsonTypeHandler.java

@@ -1,46 +0,0 @@
-package com.persagy.dc.mybatis.handler;
-
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.type.JdbcType;
-import org.apache.ibatis.type.MappedJdbcTypes;
-import org.apache.ibatis.type.MappedTypes;
-import org.springframework.util.Assert;
-/***
- * Description: 针对mysql中json类型与Model映射处理器.用于处理集合的泛型不是String类型的
- * @author : lijie
- * @date :2021/4/27 15:18
- * Update By lijie 2021/4/27 15:18
- */
-@Slf4j
-@MappedTypes({ Object.class })
-@MappedJdbcTypes(JdbcType.VARCHAR)
-public class DbJsonTypeHandler extends AbstractJsonTypeHandler<Object> {
-
-    private final Class<?> clazz;
-
-    public DbJsonTypeHandler(Class<?> type, Class<?> innerType) {
-        if (log.isTraceEnabled()) {
-            log.trace("JacksonTypeHandler(" + type + ")");
-        }
-        Assert.notNull(type, "Type argument cannot be null");
-
-        this.clazz = innerType;
-    }
-
-    @Override
-    protected Object parse(String json) {
-        if (JSONUtil.isJsonArray(json)) {
-            return JSONUtil.toList(JSONUtil.parseArray(json), this.clazz);
-        } else {
-            return JSONUtil.toBean(json, this.clazz);
-        }
-    }
-
-    @Override
-    protected String toJson(Object obj) {
-        return JSONUtil.toJsonStr(obj);
-    }
-
-}