添加兜底的JsonObject数据类型处理

This commit is contained in:
yanglin 2024-06-25 11:04:21 +08:00
parent fac5f16155
commit 7b938909ed
2 changed files with 57 additions and 0 deletions

View File

@ -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;
}
}
}

View File

@ -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();
}
}