• 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

    温馨提示❤

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

  • 相关阅读:
    Spark实现TopN
    学习一分钟,游戏“一会会”,你的节前Flag立正了吗?
    UE4蓝图
    c++源码编译过程(翻译阶段)的若干细节概要
    力扣labuladong——一刷day44
    ShowDoc后台文件上传漏洞分析 CNVD-2020-49480(CVE-2021-41745)
    vue3中如何掉用子組件的方法
    体验SOLIDWORKS旋转反侧切除增强 硕迪科技
    uniapp实战项目 (仿知识星球App) - - 利用computed监听用户操作
    对已经关闭的 channel 进行读写关闭操作会发生什么?
  • 原文地址:https://blog.csdn.net/qq_25919879/article/details/126689764