1. 表结构

1.1 在Mysql中的数据类型,longblob  -->  blob, longtext --> clob

2. 配置文件, 请参考  myBatis之入门示例

3. LOB.java

package com.blueStarWei.entity;

public class LOB {

    private Integer id;

    private byte[] picture;//BLOb  --> byte[]

    private String remark;//CLOB --> String

    //getter & setter method

   //toString{No picture}

}

3.1 在Java中数据类型:  byte[]   -->  BLOb ,  String -->  CLOB

4. LOBMapper.java

package com.blueStarWei.mappers;

import com.blueStarWei.entity.LOB;

public interface LOBMapper {

    void insert(LOB lob);

    LOB getLOBByID(Integer id);
}

5. LOBMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.blueStarWei.mappers.LOBMapper"> <insert id="insert" parameterType="LOB">
insert into t_lob values(null,#{picture},#{remark});
</insert> <select id="getLOBByID" parameterType="Integer" resultMap="LobResult">
select * from t_lob where id = #{id};
</select> <resultMap type="LOB" id="LobResult">
<id property="id" column="id"/>
<result property="picture" column="picture"/>
<result property="remark" column="remark"/>
</resultMap> </mapper>

6. TestLOB.java

package com.blueStarWei.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream; import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import com.blueStarWei.entity.LOB;
import com.blueStarWei.mappers.LOBMapper;
import com.blueStarWei.utils.SqlSessionFactoryUtil; public class TestLOB { @Test
public void testInsert() {
SqlSession session = SqlSessionFactoryUtil.openSession();
LOBMapper mapper = session.getMapper(LOBMapper.class); LOB lob = new LOB();
lob.setRemark("long text for clob...");
try {
FileInputStream in = new FileInputStream(new File("C:/Users/msi/Pictures/Camera Roll/Happy.png"));
byte[] picture = new byte[in.available()];
in.read(picture);
in.close();
lob.setPicture(picture);
} catch (Exception e) {
e.printStackTrace();
} mapper.insert(lob);
session.commit();
session.close();
} @Test
public void testGetLob() {
SqlSession session = SqlSessionFactoryUtil.openSession();
LOBMapper mapper = session.getMapper(LOBMapper.class);
LOB lob = mapper.getLOBByID(6);
System.out.println(lob); byte[] picture = lob.getPicture();
File file = new File("C:/Users/msi/Pictures/Camera Roll/Happy_copy.png");
try {
FileOutputStream out = new FileOutputStream(file);
out.write(picture);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

7.日志

7.1 表数据

7.2 TestLOB输出

7.3 生成图片

8.总结:

Blob & Clob 就是通过流进行读写操作

更多内容,请访问:http://www.cnblogs.com/BlueStarWei/

myBatis之Clob & Blob的更多相关文章

  1. mybatis 处理CLOB/BLOB类型数据

    BLOB和CLOB都是大字段类型. BLOB是按二进制来存储的,而CLOB是可以直接存储文字的. 通常像图片.文件.音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去.文章或者是较长的文字 ...

  2. MyBatis(3.2.3) - Handling the CLOB/BLOB types

    MyBatis provides built-in support for mapping CLOB/BLOB type columns. Assume we have the following t ...

  3. spring + mybatis 存取clob

    存的时候会比较麻烦,需要使用select for update的方式更新数据,如果原来没有这一条数据,还需要先新增,新增的时候需要将clob字段存为oracle.sql.CLOB.empty_lob( ...

  4. 深入浅出JDBC-操作时间与大对象(Clob/Blob)

    一.时间(Date.Time.Timestamp) java.sql.Date/java.sql.Time/java.sql.Timestamp extends java.util.Date publ ...

  5. struts2前端页面读取Clob/BLOB

    在通过Struts2标签显示对象的Clob属性值的时候.显示的并非CLOB或者BLOB的内容,而是显示的toString方法的值 比如我在实体中的注解为: @Lob @Column(name = &q ...

  6. Oracle jdbc 插入 clob blob

    Oracle 使用 clob 与 blob 插入一些比较庞大的文本或者文件,JDBC 插入时 也比较简单 表结构 CREATE TABLE test_info ( user_id int NOT NU ...

  7. JDBC 复习3 存取Oracle大数据 clob blob

    1 目录结构记得导包咯 mysql oracle 2 代码,DBUtil工具类见前面的随笔博文 package dbex.mysql; import java.io.BufferedReader; i ...

  8. oracle clob blob dblink

    Create global temporary table temp on commit preserve rows as select * from abc@xxx select * from te ...

  9. 小峰mybatis(1) 处理clob,blob等。。

    一.mybatis处理CLOB.BLOB类型数据 CLOB:大文本类型:小说啊等大文本的:对应数据库类型不一致,有long等: BLOB:二进制的,图片:电影.音乐等二进制的: 在mysql中: bl ...

随机推荐

  1. 在 Confluence 6 中禁用 workbox 应用通知

    如果你选择 不提供应用通知(does not provide in-app notifications): Confluence workbox 图标将不会可见同时用户也不能在这个服务器上访问 wor ...

  2. 【VBA】数组定义时,括号内的数值n为最大下标,其长度为n+1

    定义数组 dim arr(9) as integer注意这是数组的长度为10,而9指的是最大下标值. 所以在redim和赋值的时候要特别小心,防止错位.

  3. Intenet 地址

    java.net.InetAddress类是java对Ip地址(包括ipv4和ipv6)的高层表示,大多数其他网络类都要用到这个类,包括Socket, ServerSocket, URL, Datag ...

  4. AppServ安装到一半卡住的问题

    今天在笔记本安装AppServ的时候,运行到Installing mysql service时就卡住不动了,因为之前在自己的台式电脑安装过AppServ,当时是一步成功的,所以觉得这个问题莫名其妙,因 ...

  5. Git使用二:git与svn的区别与工作流程

    svn记录的是每一次版本变动的内容,三角形代表改动的内容 git是将每个版本独立保存 git的三棵树:工作区域.暂存区域.git仓库 工作目录:平时存放项目的地方暂存区域:临时存放改动,即将提交到仓库 ...

  6. Scrapy库的安装(windows版)

    这个是需要安装的所有文件 1. wheel pip install wheel 2. lxml http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 3. P ...

  7. epoll函数

    函数epoll 1. 函数epoll_creat: 该函数生成一个epoll专用的文件描述符 int epoll_creae(int size); 分析: size:epoll上能关注的最大描述符数 ...

  8. hadoop集群运行jps命令以后Datanode节点未启动的解决办法

    出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而da ...

  9. SignalRMvc的简单例子

    1.介绍 我们知道传统的http采用的是“拉模型”,也就是每次请求,每次断开这种短请求模式,这种场景下,client是老大,server就像一个小乌龟任人摆布,很显然,只有一方主动,这事情就没那么完美 ...

  10. [转] mongoDB与mongoose

    mongoDB简介 mongoDB与一些关系型数据库相比,它更显得轻巧.灵活,非常适合在数据规模很大.事务性不强的场合下使用.同时它也是一个对象数据库,没有表.行等概念,也没有固定的模式和结构,所有的 ...