mybatis没有clob类型_mybatis 处理CLOB/BLOB类型数据

blob和clob都是大字段类型。

blob是按二进制来存储的,而clob是可以直接存储文字的。

通常像图片、文件、音乐等信息就用blob字段来存储,先将文件转为二进制再存储进去。文章或者是较长的文字,就用clob存储.

blob和clob在不同的数据库中对应的类型也不一样:

mysql 中:clob对应text/longtext,blob对应blob

oracle中:clob对应clob,blob对应blob

mybatis提供了内建的对clob/blob类型列的映射处理支持。

建表语句:

create table user_pics(

id number primary key,

name varchar2(50) ,

pic blob,

bio clob

);

照片(pic)可以是png,jpg或其他格式的。简介信息(bio)可以是学比较长的文字描述。默认情况下,mybatis将clob类型的列映射到java.lang.string类型上、而把blob列映射到byte[]类型上。

public class userpic{

private int id;

private string name;

private byte[] pic;

private string bio;

//setters & getters

}

映射文件:

select my_seq.nextval from dual

insert into user_pics(id,name, pic,bio)

values(#{id},#{name},#{pic},#{bio})

select * from user_pics where id=#{id}

映射接口:

public interface picmapper {

int insertuserpic(userpic userpic);

userpic getuserpicbyid(int id);

}

测试方法:

public void test_insertuserpic(){

string name = "tom";

string bio = "可以是很长的字符串";

byte[] pic = null;

try {

//读取用户头像图片

file file = new file("src/com/briup/special/1.gif");

inputstream is = new fileinputstream(file);

pic = new byte[is.available()];

is.read(pic);

is.close();

} catch (exception e){

e.printstacktrace();

}

//准备好要插入到数据库中的数据并封装成对象

userpic userpic = new userpic(name, pic , bio);

sqlsession sqlsession = null;

try{

sqlsession = mybatissqlsessionfactory.opensession();

specialmapper mapper = sqlsession.getmapper(specialmapper.class);

mapper.insertuserpic(userpic);

sqlsession.commit();

}catch (exception e) {

e.printstacktrace();

}

}

下面的getuserpic()方法将clob类型数据读取到string类型,blob类型数据读取成byte[]属性:

@test

public void test_getuserpicbyid(){

sqlsession sqlsession = null;

try {

sqlsession = mybatissqlsessionfactory.opensession();

specialmapper mapper = sqlsession.getmapper(specialmapper.class);

userpic userpic = mapper.getuserpicbyid(59);

system.out.println(userpic.getid());

system.out.println(userpic.getname());

system.out.println(userpic.getbio());

system.out.println(userpic.getpic().length);

} catch (exception e) {

e.printstacktrace();

}

}

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值