MyBatis-plus處理存儲(chǔ)json數(shù)據(jù)過(guò)程
對(duì)象和集合分兩種情況處理,目前我用的MP的版本是3.4.2
1、如果是對(duì)象
直接用MP內(nèi)置的Handler,JacksonTypeHandler或FastjsonTypeHandler
@TableField(typeHandler = FastjsonTypeHandler.class) //@TableField(typeHandler = JacksonTypeHandler.class) private CompaniesProject companiesProject;
然后 增加上 autoResultMap = true 屬性,數(shù)據(jù)庫(kù)字段companies_project mysql可以用json類(lèi)型,沒(méi)有就用字符類(lèi)型,就可以了
@TableName(value = "table_name",autoResultMap = true)
2、如果需要轉(zhuǎn)換的是List集合
那么目前MP自帶的Handler就不行,它只能處理對(duì)象,不能處理集合,需要進(jìn)行改造
下面這種會(huì)轉(zhuǎn)換失敗,直接報(bào)錯(cuò)的
@TableField(typeHandler = FastjsonTypeHandler.class) //@TableField(typeHandler = JacksonTypeHandler.class) private List<CompaniesProject> companiesProjectList;
需要把這段JSON.parseObject 改為解析集合的方法 JSON.parseArray
新建一個(gè)自定義處理器,然后繼承 FastjsonTypeHandler ,重載parse方法
public class JSONTypeHandler extends FastjsonTypeHandler { private final Class<? extends Object> type; public JSONTypeHandler(Class<?> type) { super(type); this.type = type; } @Override protected List parse(String json) { return JSON.parseArray(json, type); // return JSON.parseObject(json, type); } @Override protected String toJson(Object obj) { return super.toJson(obj); } }
這樣還不行,因?yàn)镸P不知為何解析不了 CompaniesProject 類(lèi)型,需要明確告訴MP的class類(lèi)型
修改 @TableName,增加resultMap
@TableName(value = "table_name",resultMap = "com.xx.xx.xxDao.selectResultMap")
在對(duì)應(yīng)的dao xml中
<mapper namespace="com.xx.xx.xxDao"> <resultMap id="selectResultMap" type="com.xx.xx.xx.ProjectScholarshipDeclarationCompaniesProjectEntity"> <result property="companiesProjectList" column="companies_project_list" typeHandler="com.xx.common.handler.JSONTypeHandler" javaType="com.xx.xx.ProjectScholarshipDeclarationCompaniesProjectEntity$CompaniesProject"/> </resultMap> </mapper>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- MyBatis-Plus實(shí)現(xiàn)優(yōu)雅處理JSON字段映射
- 利用MyBatis-Plus靈活處理JSON字段的技巧與最佳實(shí)踐
- SpringBoot?mybatis-plus使用json字段實(shí)戰(zhàn)指南
- Mybatis-Plus處理Mysql?Json類(lèi)型字段的詳細(xì)教程
- mybatis-plus通用枚舉@JsonValue接收參數(shù)報(bào)錯(cuò)No enum constant
- Mybatis-plus操作json字段實(shí)戰(zhàn)教程
- mybatis-plus 如何操作json字段
- Mybatis-Plus讀寫(xiě)Mysql的Json字段的操作代碼
相關(guān)文章
Java的Hibernate框架結(jié)合MySQL的入門(mén)學(xué)習(xí)教程
Java世界中的SSH三大框架是Web開(kāi)發(fā)方面的人氣組合,Hibernate便是其中之一,這里我們來(lái)整理一下Java的Hibernate框架結(jié)合MySQL的入門(mén)學(xué)習(xí)教程,需要的朋友可以參考下2016-07-07SpringCloud Gateway實(shí)現(xiàn)限流功能詳解
SpringCloud Gateway 是 Spring Cloud 的一個(gè)全新項(xiàng)目,它旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單有效的統(tǒng)一的 API 路由管理方式。這篇文章主要介紹了SpringCloud Gateway實(shí)現(xiàn)限流,需要的朋友可以參考下2022-11-11Spring @async方法如何添加注解實(shí)現(xiàn)異步調(diào)用
這篇文章主要介紹了Spring @async方法如何添加注解實(shí)現(xiàn)異步調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01log4j2 自動(dòng)刪除過(guò)期日志文件的配置及實(shí)現(xiàn)原理
這篇文章主要介紹了log4j2 自動(dòng)刪除過(guò)期日志文件配置及實(shí)現(xiàn)原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07