海尔集团电商网站建设,动态列线图怎么制作网页,app推广专员好做吗,公司网站建设要注意的问题Mybatis 处理 CLOB/BLOB 类型数据
BLOB 和 CLOB 都是大型字段类型。
BLOB通过二进制存储#xff0c;而CLOB可以直接存储文本。
通常#xff0c;图片、文件、音乐等信息存储在 BLOB 字段中。首先#xff0c;文件是转换为二进制#xff0c;然后存储在。文章或较长的文本存…Mybatis 处理 CLOB/BLOB 类型数据
BLOB 和 CLOB 都是大型字段类型。
BLOB通过二进制存储而CLOB可以直接存储文本。
通常图片、文件、音乐等信息存储在 BLOB 字段中。首先文件是转换为二进制然后存储在。文章或较长的文本存储在 CLOB 中。
不同数据库中相应的 BLOB 和 CLOB 类型也不同
在MySQL中clob对应于text/longtextblob对应于blob。
在Oracle中clob 对应于 clobblob 对应于 blob。
MyBatis 为 CLOB/BLOB 类型的列提供了内置的映射支持。
1、创建表语句
create table user_pics(id number primary key,name varchar2(50) ,pic blob,bio clob
);2、图片PICS可以是PNGJPG或其他格式。简要信息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
}3、Map 文件:
insert idinsertUserPic parameterTypeUserPicselectKey keyPropertyid resultTypeint orderBEFOREselect my_seq.nextval from dual/selectKeyinsert into user_pics(id,name, pic,bio) values(#{id},#{name},#{pic},#{bio})
/insertselect idgetUserPicById parameterTypeint resultTypeUserPicselect * from user_pics where id#{id}
/select4、Mapping 接口:
public interface PicMapper {int insertUserPic(UserPic userPic);UserPic getUserPicById(int id);
}5、测试方法
Test
public void test_insertUserPic(){String name tom;String bio Can be a very long string;byte[] pic null;try {//Read user pictureFile 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();}//Prepare the data to be inserted into the database and encapsulate it as an objectUserPic 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();}
}6、以下 getUserPic 方法将 CLOB 类型数据读取为字符串类型将 BLOB 类型数据读取为字节 []属性
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();}
}