• MyBatis处理CLOB/BLOB类型数据,解决读取问题



    前言

    使用Mybatis时有两个类型需要特殊处理,Blob(Binary Large Object)是指二进制大对象字段,Clob(Character Large Object)是指大字符对象。其中Blob是为存储大的二进制数据而设计的,而Clob是为存储大的文本数据而设计的。JDBC的PreparedStatement和ResultSet都提供了相应的方法来支持Blob和Clob操作,Mybatis各版本也支持对Blob或者Clob的存储以及读取操作,本文详细介绍Mybatis中Clob字段的操作。


    一、CLOB和BLOB介绍

    BLOB和CLOB都是大字段类型。(java)

    BLOB是按二进制来存储的,而CLOB是能够直接存储文字的。(sql)

    一般像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。文章或者是较长的文字,就用CLOB存储数据库

    BLOB和CLOB在不一样的数据库中对应的类型也不同:
    MySQL 中:clob对应text/longtext,blob对应blob
    Oracle中:clob对应clob,blob对应blob
    MyBatis提供了内建的对CLOB/BLOB类型列的映射处理支持。(app)

    二、编写Mapper文件

    如下所示:Mapper文件中查询sql的id为queryByList,report_summary为Oracle数据库中的一个字段,是CLOB类型。myClob为java类,在java类中定义一个String类型的字段reportSummary,用于接收CLOB信息。

    Mapper.xml文件加入如下配置可以读取CLOB和BLOB类型的数据

    jdbcType="CLOB" typeHandler="org.apache.ibatis.type.ClobTypeHandler"
    jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BLOBTypeHandler"
    
    • 1
    • 2
    <select id="queryByList" parameterType="Map" resultMap="queryBaseResultMap">
        select  id ,title,type,report_summary,author from my_clob
        where 1 = 1 order by ${orderByClause}
    </select>
    <resultMap id="queryBaseResultMap" type="com.mxm.model.MyClob" >
        <id column="Id" property="id" jdbcType="INTEGER" />
        <result column="type" property="type" jdbcType="INTEGER" />
        <result column="title" property="title" jdbcType="VARCHAR" />
        <result column="author" property="author" jdbcType="VARCHAR" />
        <result column="report_summary" property="reportSummary" jdbcType="CLOB" typeHandler="org.apache.ibatis.type.ClobTypeHandler">
    </resultMap>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    温馨提示❤

    如果有遇到问题,可以直接关注并私信我,发送报错问题,我看到后会第一时间回复。

  • 相关阅读:
    Linux 基础-查看 cpu、内存和环境等信息
    新库上线 | CnOpenData国际货运代理信息数据
    九齐NY8A051H单片机概述及特征应用
    【LeetCode】No.88. Merge Sorted Array -- Java Version
    【数据库】Redis
    【音视频】AAC音频压缩格式
    113.(leaflet篇)leaflet根据距离截取线段
    YOLO算法
    【Linux从入门到精通】多线程 | 线程互斥(互斥锁)
    Redis实战 - 01 Redis 和 SpringSecurity Oauth2 实现认证授权中心
  • 原文地址:https://blog.csdn.net/qq_25919879/article/details/126689764