From da63bc31cd42105f4427a415c63adc4f2906fda0 Mon Sep 17 00:00:00 2001 From: "hong.yang" Date: Wed, 8 May 2024 17:38:53 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E8=A7=A3=E5=86=B3oracle=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E7=9A=84TIMESTAMP=E7=B1=BB=E5=9E=8B=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=8F=E5=88=97=E5=8C=96=E5=A4=B1=E8=B4=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataRoomObjectMapperConfiguration.java | 2 + .../config/OracleTimestampSerializer.java | 42 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleTimestampSerializer.java diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java index 01913bff..44d0b815 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule; import com.gccloud.dataroom.core.constant.DataRoomConst; import lombok.extern.slf4j.Slf4j; import oracle.sql.CLOB; +import oracle.sql.TIMESTAMP; import org.json.JSONArray; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -41,6 +42,7 @@ public class DataRoomObjectMapperConfiguration { // 解决 接口响应中包含JSONObject 或 JSONArray时, 序列化失败,变成{empty: false} 的问题 simpleModule.addSerializer(JSONArray.class, JSONArraySerializer.instance); simpleModule.addSerializer(CLOB.class, new OracleClobSerializer()); + simpleModule.addSerializer(TIMESTAMP.class, new OracleTimestampSerializer()); objectMapper.registerModule(simpleModule); log.info(DataRoomConst.Console.LINE); diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleTimestampSerializer.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleTimestampSerializer.java new file mode 100644 index 00000000..9690b65d --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleTimestampSerializer.java @@ -0,0 +1,42 @@ +package com.gccloud.dataroom.core.config; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import lombok.extern.slf4j.Slf4j; +import oracle.sql.TIMESTAMP; +import org.apache.commons.lang3.exception.ExceptionUtils; + +import java.io.IOException; + +/** + * 解决oracle TIMESTAMP类型返回序列化问题 + * @author hongyang + * @version 1.0 + * @date 2024/05/07 10:30 + */ +@Slf4j +public class OracleTimestampSerializer extends JsonSerializer { + + @Override + public void serialize(TIMESTAMP timestamp, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + jsonGenerator.writeString(timestampToString(timestamp)); + } + + /** + * timestamp字段处理 + * + * @param timestamp + * @return + */ + public static String timestampToString(TIMESTAMP timestamp) { + String content = ""; + try { + // 转为日期格式 + content = timestamp.stringValue(); + } catch (Exception e) { + log.error(ExceptionUtils.getStackTrace(e)); + } + return content; + } +}