浅淡mybatis对Oracle中BLOB以及CLOB字段的处理

2022-08-22 10:39:56

在对数据进行数据库存储的时候,通常有遇到内容较大的数据。因ORACLE字段的限制,VARCHAR2类型只支持最长4000个

英文字符的保存。此时只能通过BLOB或CLOB来存取。

BLOB全称byte类型的大对象,即字节型大对象,CLOB全称Character类型的大对象即字符型大对象。虽然在使用mybatic读取这两种类型时可以用to_char函数将字段转换成字符串类型,但是遇到长度超过4000的数据时还是会报错误。此时就需要通过一些手段来对它们进行处理。

首先,不管使用哪种类型,都需要将表封装成一个对象,对象的字段跟数据库一一对应。

比如有这么一张数据表PEOPLE

IDNUMBER
NAMEVARCHAR2(10)
DESCBLOB

此时需要建一个People.java类,内容为

public class People{
    private Integer id;
    private String name;
    private byte[] desc;
    //getter and setter
}

此时对于desc字段需要使用byte[]数组。

在mybatis查询时直接将resultType="People"即可。

若是表格式为

IDNUMBER
NAMEVARCHAR2(10)
DESCCLOB

此时对象需要以为

public class People{
    private Integer id;
    private String name;
    private String desc;
    //getter and setter
}

然后在取数据时需要定义一个resultmap映射对象

<resultMap type="People" id="peopleMap"> 
    <result property="desc" column="desc" javaType="String" jdbcType="VARBINARY"/> </resultMap>
 <select id="query" parameterType="Map" resultMap="peopleMap">
    select * from people
</select>

根据代码可以看到,只需要对相应字段进行映射就好,其它字段系统会自动映射。

  • 作者:先生有火吗
  • 原文链接:https://blog.csdn.net/qqq778899123/article/details/105185430
    更新时间:2022-08-22 10:39:56