最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis-plus處理存儲json數(shù)據(jù)過程

 更新時間:2025年08月28日 09:50:43   作者:Wang__dream  
文章介紹MyBatis-Plus 3.4.21處理對象與集合的差異:對象可用內(nèi)置Handler配合autoResultMap,集合需自定義處理器繼承FastjsonTypeHandler并重寫parse方法,同時需明確指定類類型及XML中的resultMap以解決轉(zhuǎn)換問題

對象和集合分兩種情況處理,目前我用的MP的版本是3.4.2

1、如果是對象

直接用MP內(nèi)置的Handler,JacksonTypeHandler或FastjsonTypeHandler

@TableField(typeHandler = FastjsonTypeHandler.class)
//@TableField(typeHandler = JacksonTypeHandler.class)
private CompaniesProject companiesProject;

然后 增加上 autoResultMap = true 屬性,數(shù)據(jù)庫字段companies_project mysql可以用json類型,沒有就用字符類型,就可以了

@TableName(value = "table_name",autoResultMap = true)

2、如果需要轉(zhuǎn)換的是List集合

那么目前MP自帶的Handler就不行,它只能處理對象,不能處理集合,需要進行改造

下面這種會轉(zhuǎn)換失敗,直接報錯的

@TableField(typeHandler = FastjsonTypeHandler.class)
//@TableField(typeHandler = JacksonTypeHandler.class)
private List<CompaniesProject> companiesProjectList;

需要把這段JSON.parseObject 改為解析集合的方法 JSON.parseArray

新建一個自定義處理器,然后繼承 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);
    }
}

這樣還不行,因為MP不知為何解析不了 CompaniesProject 類型,需要明確告訴MP的class類型

修改 @TableName,增加resultMap

@TableName(value = "table_name",resultMap = "com.xx.xx.xxDao.selectResultMap")

在對應(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é)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

武穴市| 南平市| 遵义县| 千阳县| 漳浦县| 沂水县| 峨山| 屏山县| 蕲春县| 青铜峡市| 饶平县| 巴林左旗| 刚察县| 涟源市| 延长县| 东港市| 唐河县| 玛沁县| 哈尔滨市| 双辽市| 北碚区| 兰考县| 辽阳市| 莫力| 育儿| 胶州市| 湖州市| 尼勒克县| 镇沅| 溧阳市| 称多县| 德惠市| 哈密市| 枝江市| 尉犁县| 阿巴嘎旗| 兴仁县| 夏津县| 吴堡县| 平原县| 蓬安县|