mybatis 处理CLOB/BLOB类型数据
2019-10-16 08:20:59来源:博客园 阅读 ()
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 }
映射文件:
<insert id="insertUserPic" parameterType="UserPic"> <selectKey keyProperty="id" resultType="int" order="BEFORE"> select my_seq.nextval from dual </selectKey> insert into user_pics(id,name, pic,bio) values(#{id},#{name},#{pic},#{bio}) </insert> <select id="getUserPicById" parameterType="int" resultType="UserPic"> select * from user_pics where id=#{id} </select>
映射接口:
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(); } }
原文链接:https://www.cnblogs.com/Magic-Li/p/11684507.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MyBatis中的$和#,用不好,准备走人! 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- Spring Cloud Gateway 全局通用异常处理 2020-06-08
- 聊聊 OAuth 2.0 的 Token 续期处理 2020-06-08
- 天哪!手动编写mybatis雏形竟然这么简单 2020-06-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash