欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatisplus如何存儲(chǔ)List、Map

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

一、前提概要

1.1 支持環(huán)境

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

1.2 需求場(chǎng)景

使用MySQL數(shù)據(jù)庫(kù)存儲(chǔ)時(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ù)庫(kù)表名",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ù)庫(kù)表名", autoResultMap = true)
@TableField(typeHandler = ObjectToJacksonHandler.class)

總結(jié)

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

相關(guān)文章

  • Java實(shí)現(xiàn)PIFrame窗體效果的示例代碼

    Java實(shí)現(xiàn)PIFrame窗體效果的示例代碼

    在很多現(xiàn)代應(yīng)用中,常常需要使用個(gè)性化的窗體外觀,擺脫傳統(tǒng)窗口邊框的限制,無(wú)邊框、透明、圓角和陰影效果使得窗體顯得更輕巧、更具視覺吸引力,同時(shí)允許用戶自由拖拽和停靠窗體,所以本文給大家介紹了如何使用Java實(shí)現(xiàn)PIFrame窗體效果,需要的朋友可以參考下
    2025-03-03
  • Java使用Ehcache緩存框架的技術(shù)指南

    Java使用Ehcache緩存框架的技術(shù)指南

    Ehcache 是 Java 平臺(tái)下一個(gè)開源、高性能的分布式緩存框架,常用于提高系統(tǒng)性能和可擴(kuò)展性,它能夠幫助開發(fā)者緩存頻繁訪問的數(shù)據(jù),從而減少對(duì)數(shù)據(jù)庫(kù)和其他持久化存儲(chǔ)的訪問壓力,本文給大家介紹了Java使用Ehcache緩存框架的技術(shù)指南,需要的朋友可以參考下
    2025-03-03
  • spring data jpa使用詳解(推薦)

    spring data jpa使用詳解(推薦)

    這篇文章主要介紹了spring data jpa使用詳解(推薦),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 深入了解Java核心類庫(kù)--Math類

    深入了解Java核心類庫(kù)--Math類

    本文是小編最新給大家整理的關(guān)于Java中Math類常用方法的知識(shí),通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧,
    2021-07-07
  • SpringBoot實(shí)現(xiàn)國(guó)際化的操作步驟

    SpringBoot實(shí)現(xiàn)國(guó)際化的操作步驟

    國(guó)際化(Internationalization) 是指為了適應(yīng)不同語(yǔ)言、文化和地區(qū)的用戶,使軟件能夠方便地進(jìn)行本地化修改的過程,本文介紹了SpringBoot 國(guó)際化功能的簡(jiǎn)單使用,感興趣的朋友可以參考下
    2024-02-02
  • Java實(shí)現(xiàn)顏色漸變效果

    Java實(shí)現(xiàn)顏色漸變效果

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)顏色漸變效果的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • MyBatis中${}?和?#{}?有什么區(qū)別小結(jié)

    MyBatis中${}?和?#{}?有什么區(qū)別小結(jié)

    ${}?和?#{}?都是?MyBatis?中用來替換參數(shù)的,它們都可以將用戶傳遞過來的參數(shù),替換到?MyBatis?最終生成的?SQL?中,但它們區(qū)別卻是很大的,今天通過本文介紹下MyBatis中${}?和?#{}?有什么區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • idea 列編輯模式取消的操作

    idea 列編輯模式取消的操作

    這篇文章主要介紹了idea 列編輯模式取消的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Spring Cloud Feign組件實(shí)例解析

    Spring Cloud Feign組件實(shí)例解析

    這篇文章主要介紹了Spring Cloud Feign組件實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java實(shí)現(xiàn)md5和base64加密解密的示例代碼

    Java實(shí)現(xiàn)md5和base64加密解密的示例代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)md5和base64加密解密的示例代碼,幫助大家更好的利用Java加密解密文件,感興趣的朋友可以了解下
    2020-09-09

最新評(píng)論