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

Mybatisplus如何存儲List、Map

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

一、前提概要

1.1 支持環(huán)境

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

1.2 需求場景

使用MySQL數(shù)據(jù)庫存儲時(shí),由于業(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é)

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

相關(guān)文章

最新評論

莱西市| 东阳市| 固阳县| 雷州市| 南召县| 革吉县| 肇州县| 凤凰县| 航空| 金沙县| 崇明县| 富源县| 阿拉善盟| 常宁市| 独山县| 湘潭县| 开化县| 宣武区| 彝良县| 革吉县| 河南省| 邛崃市| 从江县| 栖霞市| 嘉荫县| 彝良县| 嘉兴市| 洛川县| 南康市| 奉新县| 印江| 清原| 唐海县| 钟山县| 郑州市| 彰化市| 大荔县| 海阳市| 金昌市| 高要市| 新田县|