在对数据进行数据库存储的时候,通常有遇到内容较大的数据。因ORACLE字段的限制,VARCHAR2类型只支持最长4000个
英文字符的保存。此时只能通过BLOB或CLOB来存取。
BLOB全称byte类型的大对象,即字节型大对象,CLOB全称Character类型的大对象即字符型大对象。虽然在使用mybatic读取这两种类型时可以用to_char函数将字段转换成字符串类型,但是遇到长度超过4000的数据时还是会报错误。此时就需要通过一些手段来对它们进行处理。
首先,不管使用哪种类型,都需要将表封装成一个对象,对象的字段跟数据库一一对应。
比如有这么一张数据表PEOPLE
ID | NUMBER |
NAME | VARCHAR2(10) |
DESC | BLOB |
此时需要建一个People.java类,内容为
public class People{
private Integer id;
private String name;
private byte[] desc;
//getter and setter
}
此时对于desc字段需要使用byte[]数组。
在mybatis查询时直接将resultType="People"即可。
若是表格式为
ID | NUMBER |
NAME | VARCHAR2(10) |
DESC | CLOB |
此时对象需要以为
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>
根据代码可以看到,只需要对相应字段进行映射就好,其它字段系统会自动映射。