From aa46e9b5029293bd90695b3f8dedca95a802c170 Mon Sep 17 00:00:00 2001 From: "hong.yang" Date: Fri, 22 Mar 2024 17:56:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A7=A3=E5=86=B3oracle=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90clob=E5=AD=97=E6=AE=B5=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DataRoom/dataroom-core/pom.xml | 2 +- .../DataRoomObjectMapperConfiguration.java | 3 +- .../core/config/OracleClobSerializer.java | 42 +++++++++++++++++++ DataRoom/dataroom-server/pom.xml | 2 +- DataRoom/pom.xml | 2 +- 5 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleClobSerializer.java diff --git a/DataRoom/dataroom-core/pom.xml b/DataRoom/dataroom-core/pom.xml index f6838e2a..a16bece2 100644 --- a/DataRoom/dataroom-core/pom.xml +++ b/DataRoom/dataroom-core/pom.xml @@ -6,7 +6,7 @@ com.gccloud dataroom - 2.0.1.2024011701.Alpha + 2.0.1.2024032201.Alpha dataroom-core 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 38e3d17a..01913bff 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 @@ -6,6 +6,7 @@ import com.fasterxml.jackson.datatype.jsonorg.JSONArraySerializer; import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule; import com.gccloud.dataroom.core.constant.DataRoomConst; import lombok.extern.slf4j.Slf4j; +import oracle.sql.CLOB; import org.json.JSONArray; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -36,10 +37,10 @@ public class DataRoomObjectMapperConfiguration { // 不注册该模块会导致 @RequestBody 为 JSONObject 时属性无法填充 JsonOrgModule jsonOrgModule = new JsonOrgModule(); objectMapper.registerModule(jsonOrgModule); - SimpleModule simpleModule = new SimpleModule(); // 解决 接口响应中包含JSONObject 或 JSONArray时, 序列化失败,变成{empty: false} 的问题 simpleModule.addSerializer(JSONArray.class, JSONArraySerializer.instance); + simpleModule.addSerializer(CLOB.class, new OracleClobSerializer()); objectMapper.registerModule(simpleModule); log.info(DataRoomConst.Console.LINE); diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleClobSerializer.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleClobSerializer.java new file mode 100644 index 00000000..88b2bedd --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleClobSerializer.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.CLOB; +import org.apache.commons.lang3.exception.ExceptionUtils; + +import java.io.IOException; +import java.sql.Clob; + +/** + * 解决oracle CLOB类型返回序列化问题 + * @author hongyang + * @version 1.0 + * @date 2024/03/22 17:30 + */ +@Slf4j +public class OracleClobSerializer extends JsonSerializer { + + @Override + public void serialize(CLOB clob, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + jsonGenerator.writeString(clobToString(clob)); + } + + /** + * Clob字段处理 + * + * @param clob + * @return + */ + public static String clobToString(Clob clob) { + String content = ""; + try { + content = clob.getSubString(1, (int) clob.length()); + } catch (Exception e) { + log.error(ExceptionUtils.getStackTrace(e)); + } + return content; + } +} diff --git a/DataRoom/dataroom-server/pom.xml b/DataRoom/dataroom-server/pom.xml index ec23f51f..16466114 100644 --- a/DataRoom/dataroom-server/pom.xml +++ b/DataRoom/dataroom-server/pom.xml @@ -6,7 +6,7 @@ com.gccloud dataroom - 2.0.1.2024011701.Alpha + 2.0.1.2024032201.Alpha dataroom-server diff --git a/DataRoom/pom.xml b/DataRoom/pom.xml index ec14ff2e..41f82799 100644 --- a/DataRoom/pom.xml +++ b/DataRoom/pom.xml @@ -5,7 +5,7 @@ com.gccloud dataroom - 2.0.1.2024011701.Alpha + 2.0.1.2024032201.Alpha pom dataroom