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

Mybatis返回數(shù)組的兩種實現(xiàn)方式

 更新時間:2025年03月27日 09:57:50   作者:Aa_duidui  
這篇文章主要介紹了Mybatis返回數(shù)組的兩種實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Mybatis返回數(shù)組的兩種方式

mysql沒有數(shù)組這種類型,我們可以以數(shù)組格式的字符串加入到數(shù)據(jù)庫,返回值是數(shù)組

1.Mapper.xml 返回數(shù)組

<resultMap type="返回實體類" id="result" >
		<result property="實體類字段名" column="mysql字段名" typeHandler="處理類"/>
</resultMap>

<select id="Mapper.java的方法名" parameterType="傳參類型" resultMap="resultMap的id">
    select pricture from xm_picture
</select>

例如:

<resultMap type="co.yixiang.modules.service.dto.PictureDto" id="PictureResult" >
		<result property="pictureArr" column="picture" typeHandler="co.yixiang.utils.mybatis.JsonStringArrayTypeHandler"/>
</resultMap>

<!-- parameterType 也可以是實體類 -->
<select id="selectPictureById" parameterType="Long" resultMap="PictureResult">
    select pricture from xm_picture where id = #{id}
</select>

2.Mapper.java 返回數(shù)組 @Select注解

@Select("<script>" +
" select picture from xm_picture where id = #{id} " +
"</script>")
@Results({@Result(property="實體類字段名",column="數(shù)據(jù)庫字段名",typeHandler= 處理類.class)})
PictureDto selectById(Long id);

例如:

@Select("<script>" +
" select picture from xm_picture where id = #{id} " +
"</script>")
@Results({@Result(property="pictureArr",column="picture",typeHandler= JsonStringArrayTypeHandler.class)})
PictureDto selectById(Long id);

處理類代碼

import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

@MappedJdbcTypes({JdbcType.VARCHAR})
public class JsonStringArrayTypeHandler extends BaseTypeHandler<String[]> {
    private static final ObjectMapper mapper = new ObjectMapper();

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, String[] parameter, JdbcType jdbcType) throws SQLException {
        ps.setString(i, toJson(parameter));
    }

    @Override
    public String[] getNullableResult(ResultSet rs, String columnName) throws SQLException {
        return this.toObject(rs.getString(columnName));
    }

    @Override
    public String[] getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return this.toObject(rs.getString(columnIndex));
    }

    @Override
    public String[] getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return this.toObject(cs.getString(columnIndex));
    }

    private String toJson(String[] params) {
        try {
            return mapper.writeValueAsString(params);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "[]";
    }

    private String[] toObject(String content) {
        if (content != null && !content.isEmpty()) {
            try {
                return (String[]) mapper.readValue(content, String[].class);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        } else {
            return null;
        }
    }
}

總結(jié)

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

相關(guān)文章

  • Spring的注解配置與XML配置之間的比較

    Spring的注解配置與XML配置之間的比較

    在很多情況下,注釋配置比 XML 配置更受歡迎,注釋配置有進一步流行的趨勢。Spring 2.5 的一大增強就是引入了很多注釋類,現(xiàn)在您已經(jīng)可以使用注釋配置完成大部分 XML 配置的功能
    2013-09-09
  • Linux系統(tǒng)Java環(huán)境配置教程

    Linux系統(tǒng)Java環(huán)境配置教程

    這篇文章給大家介紹的Linux 系統(tǒng)Java環(huán)境配置教程,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • JVM進階教程之字段訪問優(yōu)化淺析

    JVM進階教程之字段訪問優(yōu)化淺析

    這篇文章主要給大家介紹了關(guān)于JVM進階教程之字段訪問優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 一文掌握Springboot集成RabbitMQ的方法

    一文掌握Springboot集成RabbitMQ的方法

    RabbitMQ是開源的消息隊列服務(wù)器,實現(xiàn)了AMQP高級消息隊列協(xié)議標準,AMQP?是一種應(yīng)用層協(xié)議,為面向消息的中間件設(shè)計,基于此協(xié)議的客戶端與消息中間件可傳遞消息,并不受產(chǎn)品、開發(fā)語言等條件的限制,這篇文章主要介紹了Springboot集成RabbitMQ的過程,需要的朋友可以參考下
    2024-04-04
  • java中不定長參數(shù)的實例用法

    java中不定長參數(shù)的實例用法

    在本篇文章里小編給大家分享的是關(guān)于java中不定長參數(shù)的使用方法以及相關(guān)代碼內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • 詳解如何快速定位和解決JSON錯誤(以Protobuf的JsonFormat.ParseException為例)

    詳解如何快速定位和解決JSON錯誤(以Protobuf的JsonFormat.ParseException為例)

    在開發(fā)過程中,JSON數(shù)據(jù)的解析是一個常見的操作,尤其是在微服務(wù)架構(gòu)中,服務(wù)之間的通信通常依賴于JSON格式的數(shù)據(jù),然而,JSON數(shù)據(jù)的格式錯誤往往會導(dǎo)致解析失敗,進而引發(fā)系統(tǒng)異常,本文將以一個實際的錯誤案例為例,詳細講解如何快速定位和解決JSON解析錯誤
    2025-03-03
  • Java 中ThreadLocal類詳解

    Java 中ThreadLocal類詳解

    什么是ThreadLocal?顧名思義它是local variable(線程局部變量)。它的功用非常簡單,就是為每一個使用該變量的線程都提供一個變量值的副本,是每一個線程都可以獨立地改變自己的副本,而不會和其它線程的副本沖突。從線程的角度看,就好像每一個線程都完全擁有該變量。
    2016-03-03
  • Spring自動配置之condition條件判斷上篇

    Spring自動配置之condition條件判斷上篇

    這篇文章主要為大家介紹了SpringBoot condition條件判斷功能的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • SpringBoot整合Redisson實現(xiàn)分布式鎖

    SpringBoot整合Redisson實現(xiàn)分布式鎖

    本文主要介紹了SpringBoot整合Redisson實現(xiàn)分布式鎖,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Mybatis Order by動態(tài)參數(shù)防注入方式

    Mybatis Order by動態(tài)參數(shù)防注入方式

    這篇文章主要介紹了Mybatis Order by動態(tài)參數(shù)防注入方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評論

谷城县| 喀喇| 竹山县| 微山县| 祁阳县| 兴安盟| 师宗县| 和硕县| 宜兰县| 政和县| 清原| 景德镇市| 陆川县| 定陶县| 河津市| 上林县| 稷山县| 富平县| 斗六市| 都昌县| 辰溪县| 邓州市| 福州市| 永德县| 曲水县| 安义县| 上犹县| 永宁县| 博爱县| 油尖旺区| 乐清市| 昆明市| 新乡县| 环江| 福海县| 白河县| 镇平县| 丹寨县| 台南县| 池州市| 武隆县|