From 7b938909edc6afd55f5608cdc1ee8b7af50abc4a Mon Sep 17 00:00:00 2001 From: yanglin Date: Tue, 25 Jun 2024 11:04:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=9C=E5=BA=95=E7=9A=84Js?= =?UTF-8?q?onObject=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/config/MybatisPlusConfig.java | 24 ++++++++++++++ .../msg/center/dal/TodoBusinessDaoTest.java | 33 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 start/src/test/java/cn/axzo/msg/center/dal/TodoBusinessDaoTest.java diff --git a/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisPlusConfig.java b/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisPlusConfig.java index 4f4fc8dc..1e819082 100644 --- a/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisPlusConfig.java +++ b/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisPlusConfig.java @@ -1,7 +1,15 @@ package cn.axzo.msg.center.notices.client.config; +import cn.axzo.msg.center.domain.utils.IgnorePropsJsonTypeHandler; +import com.alibaba.fastjson.JSONObject; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.type.TypeHandlerRegistry; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; /** * Mybatis Plus Config @@ -18,4 +26,20 @@ public class MybatisPlusConfig { return new EntityMetaObjectHandler(); } + @Component + public static class JsonObjectTypeHandlerRegister implements BeanPostProcessor { + + @Override + public Object postProcessAfterInitialization(@NotNull Object bean, @NotNull String beanName) throws BeansException { + if (!(bean instanceof SqlSessionFactory)) + return bean; + org.apache.ibatis.session.Configuration configuration = ((SqlSessionFactory) bean).getConfiguration(); + TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry(); + if(!typeHandlerRegistry.hasTypeHandler(JSONObject.class)) { + typeHandlerRegistry.register(JSONObject.class, IgnorePropsJsonTypeHandler.class); + } + return bean; + } + + } } \ No newline at end of file diff --git a/start/src/test/java/cn/axzo/msg/center/dal/TodoBusinessDaoTest.java b/start/src/test/java/cn/axzo/msg/center/dal/TodoBusinessDaoTest.java new file mode 100644 index 00000000..93df4d2b --- /dev/null +++ b/start/src/test/java/cn/axzo/msg/center/dal/TodoBusinessDaoTest.java @@ -0,0 +1,33 @@ +package cn.axzo.msg.center.dal; + +import cn.axzo.msg.center.MsgCenterApplication; +import cn.axzo.msg.center.domain.entity.TodoBusiness; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.Commit; + +/** + * @author yanglin + */ +@SpringBootTest(classes = MsgCenterApplication.class) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +class TodoBusinessDaoTest { + + private final TodoBusinessDao todoBusinessDao; + + @Test @Commit + void foo() { + JSONObject bizExtParam = JSON.parseObject("{\"taskName\": \"万科1号楼 20层 2单元\"}"); + bizExtParam.put("1", "1"); + bizExtParam.put("2", "1"); + todoBusinessDao.lambdaUpdate() + .eq(TodoBusiness::getId, 110944L) + .set(TodoBusiness::getBizExtParam, bizExtParam) + .update(); + } + +} \ No newline at end of file