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

Mybatisplus如何存儲List、Map

 更新時間:2024年01月15日 09:05:10   作者:timi先生  
這篇文章主要介紹了Mybatisplus如何存儲List、Map問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、前提概要

1.1 支持環(huán)境

數(shù)據(jù)庫支持:MySql版本要求 5.7+

1.2 需求場景

使用MySQL數(shù)據(jù)庫存儲時,由于業(yè)務(wù)要求實(shí)體類中特定字段需要使用 自定義類型或者List、Map類型。

二、需求實(shí)現(xiàn)

2.1 非自定義數(shù)據(jù)類型,List、Map

首先:在需要轉(zhuǎn)換的實(shí)體類字段上加上:

@TableField(typeHandler = JacksonTypeHandler.class)

接著:在該實(shí)體類上修改 @TableName

@TableName(value = "數(shù)據(jù)庫表名",autoResultMap = true)

2.2 自定義類型數(shù)據(jù)類型

引入依賴:

<properties>
 <jackson-core.version>2.12.6</jackson-core.version>
 <jackson-databind.version>2.12.7.1</jackson-databind.version>
 <jackson-annotations.version>2.15.2</jackson-annotations.version>
</properties>

 <dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-core</artifactId>
   <version>${jackson-core.version}</version>
 </dependency>
 <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson-databind.version}</version>
 </dependency>
 <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>${jackson-annotations.version}</version>
</dependency>

首先定義數(shù)據(jù)處理工具類:

@Component
public class ObjectToJackson {
    private static ObjectMapper mapper;

    @Resource
    public void setMapper(ObjectMapper mapper) {
        ObjectToJackson.mapper = mapper;
    }

    public static <T> String objectToJson(T o) {
        try {
            return ObjectToJackson.mapper.writeValueAsString(o);
        } catch (Exception e) {
            e.printStackTrace();
            throw new ServerException(500);
        }
    }

    public static <T> T jsonToObject(String s, TypeReference<T> typeReference) {
        if (s == null) {
            return null;
        }
        try {
            return ObjectToJackson.mapper.readValue(s, typeReference);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            throw new ServerException(500);
        }
    }
}

接著定義自己的轉(zhuǎn)化規(guī)則:

public class ObjectToJacksonHandler extends BaseTypeHandler<Object> {

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
        String json = ObjectToJackson.objectToJson(parameter);
        ps.setString(i, json);
    }

    @Override
    public Object getNullableResult(ResultSet rs, String columnName) throws SQLException {
        String string = rs.getString(columnName);
        return ObjectToJackson.jsonToObject(string, new TypeReference<>() {
        });
    }

    @Override
    public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        String string = rs.getString(columnIndex);
        return ObjectToJackson.jsonToObject(string, new TypeReference<>() {
        });
    }

    @Override
    public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        String string = cs.getString(columnIndex);
        return ObjectToJackson.jsonToObject(string, new TypeReference<>() {
        });
    }
}

使用:

@TableName(value = "數(shù)據(jù)庫表名", autoResultMap = true)
@TableField(typeHandler = ObjectToJacksonHandler.class)

總結(jié)

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

相關(guān)文章

最新評論

黄大仙区| 瑞昌市| 广宗县| 偃师市| 张家口市| 陆良县| 吉安县| 许昌市| 遂宁市| 邛崃市| 曲周县| 蛟河市| 柳江县| 班戈县| 鹿邑县| 修文县| 正镶白旗| 彰化市| 景谷| 固原市| 河曲县| 称多县| 恩施市| 洛阳市| 昭平县| 会东县| 钟祥市| 北票市| 大厂| 荣成市| 沁水县| 体育| 县级市| 比如县| 闵行区| 舞钢市| 玉林市| 北辰区| 芮城县| 霞浦县| 永福县|