Mybatis 处理 CLOB/BLOB 类型数据

这篇具有很好参考价值的文章主要介绍了Mybatis 处理 CLOB/BLOB 类型数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 类型的列提供了内置的映射支持。文章来源地址https://www.toymoban.com/news/detail-612918.html

1、创建表语句:

create table user_pics(
	id number primary key,
	name varchar2(50) ,
	pic blob,
	bio clob
);

2、图片(PICS)可以是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
}

3、Map 文件:

<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>

4、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 picture
		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();
	}
	//Prepare the data to be inserted into the database and encapsulate it as an object
	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();
	}
}

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();
	}
}

到了这里,关于Mybatis 处理 CLOB/BLOB 类型数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp小程序中处理blob二进制流数据

    小程序中是不支持blob格式数据的,new Blob()会报错Blob未定义 处理方法是转成base64格式: 首先,请求中要带上responseType: \\\"arraybuffer\\\",保证返回的数据格式是arraybuffer 使用uni.arrayBufferToBase64() 转化成base64格式,后续根据业务处理数据即可。 在这个代码中,数据是一张png格式的二维

    2024年02月04日
    浏览(46)
  • 文件流下载之——axios请求responseType为blob时,错误数据处理

    背景:一个文件下载的需求,如果成功下载data数据返回的是文件流,如果失败后端会返回失败信息,类似{code: -1, data: null, msg: ‘xxx’}。然而如果用responseType: \\\'blob’去接文件流的话,返回的错误信息也会转为blob数据格式。我们需要对返回错误信息的数据做处理,页面上提示

    2024年02月13日
    浏览(66)
  • 前端下载 Blob 类型整理

    文件流下载转Blob时类型匹配,例如: Blob配置类型如下表所示,详细介绍 后缀名 文件类型 类型(type) .xls Microsoft Excel application/vnd.ms-excel .xlsx Microsoft Excel (OpenXML) application/vnd.openxmlformats-officedocument.spreadsheetml.sheet .csv CSV text/csv .doc Microsoft Word application/msword .docx Microsoft Word (

    2024年02月17日
    浏览(42)
  • 通过 Blob 对二进制流文件下载实现文件保存下载

    原理 : 前端将二进制文件做转换 实现下载:请求后端接口-接收后端返回的二进制流(通过二进制流( Blob )下载, 把后端返回的二进制文件放在 Blob 里面)-再通过 file-saver 插件保存 需求背景 业务:下载模板文件 页面上使用: 保存文件: 发起请求通用方法(更改 axios 的 re

    2024年02月09日
    浏览(66)
  • JDBC详解(四):操作BLOB类型字段(超详解)

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! ⭕ MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据

    2024年02月04日
    浏览(37)
  • 【Navicat】Navicat 查看字段类型为 BLOB 的内容

    1、默认下点击 BLOB 类型字段是无法查看内容的 2、点击 Navicat 的 View 菜单,有多种查看方式可以供我们选择,因为我们提前已经知道 BLOB 二进制内容是字符串,所以这里选择的是 Text 3、最后重新点击 BLOB 字段,可以观察到在底部显示了二进制的内容

    2024年02月13日
    浏览(34)
  • 前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题

    本是一个非常简单的请求,即是下载文件。通常的做法如下: 1.前端通过Vue Axios向后端请求,同时在请求中设置响应体为Blob格式。 2.后端相应前端的请求,同时返回Blob格式的文件给到前端(如果没有步骤1设置响应体,则后端返回的是一个文件流,前端) 3.前端创建a标签进行

    2024年01月17日
    浏览(68)
  • 【前端】Vue之使用new Blob() 实现不同类型的文件下载

            在 Vue 项目实际开发过程中,经常需要对各种各样的类型进行下载,因为我不是前端出生,就自己在网上学习最后使用到自己的项目当中,代码冗余等低级错误还请多多指导。我发现用 Blob 二进制进行文件下载的比较多,我就采用了这一方式。         下面是一

    2024年03月20日
    浏览(56)
  • 如何将页面m3u8、blob类型的视频链接下载下来?

    有时候访问页面遇到喜欢的视频,会直接使用代码检查,找到视频链接直接拷贝下载,但是遇到video标签中的链接带有blob(如图),直接拷贝访问是无法下载的。我们需要按以下步骤来实现目的: 1.F12开启代码检查,点击代码区,CTR+F调出搜索框,输入video,找到video标

    2024年02月11日
    浏览(44)
  • Vue 之 new Blob() 文件流下载文件不同文件类型的 type 值整理

    在 Vue 项目中,经常用 Blob 二进制进行文件下载功能(vue后台返回文件流下载导出函数封装、调用示例),涉及不同后缀名的文件,这里整理一份 Blob 的配置关系对应表,在我们使用Blob做下载功能时 ,根据需要下载的文件类型修改 type 值进行下载即可。 后缀名 文件类型 类型

    2024年02月02日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包