jdk8+Mybatis3.5.0+Mysql读取LongBlob失败
问题:在mysql中存储base64,因为太长,基本就是几百K,所以用longBlob
描述:在mysql中,LongBlob、blob算是二进制流文件了,所以用普通的数据格式是不行的,这里用TypeHandler解决,有其他觉得方案欢迎在下方留言
解决:
Handler代码
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType; import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.sql.*; public class MyBlobTypeHandler extends BaseTypeHandler<String> {
// 指定字符集
private static final String DEFAULT_CHARSET = "utf-8"; @Override
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
ByteArrayInputStream bis;
try {
// 把String转化成byte流
bis = new ByteArrayInputStream(parameter.getBytes(DEFAULT_CHARSET));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Blob Encoding Error!");
}
ps.setBinaryStream(i, bis, parameter.length());
} @Override
public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
return getResult(rs.getBlob(columnName));
} @Override
public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return getResult(cs.getBlob(columnIndex));
} @Override
public String getNullableResult(ResultSet rs, int columnName) throws SQLException {
return getResult(rs.getBlob(columnName)); } private String getResult(Blob blob) throws SQLException {
byte[] returnValue = null;
if (null != blob) {
returnValue = blob.getBytes(1, (int) blob.length());
}
try {
// 把byte转化成string
if (null != returnValue) {
return new String(returnValue, DEFAULT_CHARSET);
}
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Blob Encoding Error!");
}
return null;
}
}
mybatis XML代码
<result property="signature" column="signature" typeHandler="com.kenary.config.MyBlobTypeHandler"/>
jdk8+Mybatis3.5.0+Mysql读取LongBlob失败的更多相关文章
- 卸载了mysql之后,mysql服务仍在,显示读取描述失败,错误代码2
		
卸载了mysql之后,mysql服务仍在,显示读取描述失败,错误代码2 用360软件管家,卸载mysql5.5,卸载了mysql之后,再依次删除 mysql的安装目录.c盘下的隐藏文件夹Program ...
 - PHP MySQL 读取数据
		
PHP MySQL 读取数据 从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据: SELECT column_name(s) FROM table_name 如需学习更多关于 ...
 - 从mysql读取大量数据时的实践
		
背景 程序启动时,从mysql读取所有的数据,在内存中建立数据结构.mysql表中至少有100w条记录.以后根据时间定期从mysql增量读取数据,刷新内存结构. 表结构为{uid, product, ...
 - Mysql下Limit注入方法(此方法仅适用于5.0.0<mysql<5.6.6的版本)
		
SQL语句类似下面这样:(此方法仅适用于5.0.0<mysql<5.6.6的版本) SELECT field FROM table WHERE id > 0 ORDER BY id ...
 - windows server服务器上mysql远程连接失败的坑
		
windows server服务器上mysql远程连接失败的坑 背景:趁这阿里云活动,和朋友合伙买了个服务器,最坑的是没想到他买的是windows Server的,反正便宜,将就着用吧,自己装好了wa ...
 - [转]基于全注解的Spring3.1 mvc、myBatis3.1、Mysql的轻量级项目
		
摘要 对于现在主流的j2ee企业级开发而言,ssh(struts+hibernate+spring)依然是一个事实的标准.由struts充当的mvc调度控制:hibernate的orm持久化映射:sp ...
 - 【数据库】3.0 MySQL入门学习(三)——Windows系统环境下MySQL安装
		
1.0 我的操作系统是window10 专业版 64位.,不过至少windows7以上系统都是一样的. 关于MySQL如何下载,请参考博文: [数据库]2.0 如何获得MySQL以及MySQL安装 h ...
 - 【数据库】1.0 MySQL入门学习(一)——常识性知识
		
1.0 什么是MySQL(官方发音 My Ess Que Ell)? 是一个快速.多线程.多用户和强壮的SQL数据库服务器,SQL是世界上最流行的标准化数据库语言. 名字来源:共同创办人Monty W ...
 - MySQL 创建函数失败提示1418
		
MySQL 创建函数失败提示1418 在创建函数时,往往会遇到创建函数失败的情形,除去书写的创建函数的sql语句本身语法错误之外,还会碰到一个错误就是, 1418:This function has ...
 
随机推荐
- 安卓开发_浅谈ListView之分页列表
			
前言: 在开发的过程中,有时候我们需要从网络解析一些数据,比如最近的一些新闻,我们需要把这些数据用ListView显示出来. 因为是解析一个网络数据源,这样将会一下子将所有的数据解析出来,当数据源数据 ...
 - QQ浏览器兼容模式问题
			
今天客户反馈有个问题,他说用360浏览器的兼容模式无法登陆系统,我试了可以,接着试了IE11,也可以,然后跟经理汇报,他说他用qq浏览器兼容模式就不可以,于是我试了,果然不可以... 问题是酱紫的:输 ...
 - git将本地项目推送到远程仓库
			
一.三个基本配置: Git全局设置 git config --global user.name "账户名称" git config --global user.email &quo ...
 - C#检测U盘是否插入
			
public partial class Form1 : Form { #region u盘属性 public const int WM_DEVICECHANGE = 0x219;//U盘插入后,OS ...
 - 学习CGLIB与JDK动态代理的区别
			
动态代理 代理模式是Java中常见的一种模式.代理又分为静态代理和动态代理.静态代理就是显式指定的代理,静态代理的优点是由程序员自行指定代理类并进行编译和运行,缺点是一个代理类只能对一个接口的实现类进 ...
 - 2.1Python数据处理篇之---内建有关数学的函数
			
目录 目录 前言 (一)数学相关得内建函数 (二)具体演示 1.求绝对值 2.创建一个复数 3.求商和余数 4.求x得y次幂 5.生成一个序列 6.四舍五入 7.对一个集合求和 8.求最大值 9.求最 ...
 - Hadoop2.7.6_02_HDFS常用操作
			
1. HDFS常用操作 1.1. 查询 1.1.1. 浏览器查询 1.1.2. 命令行查询 [yun@mini04 bin]$ hadoop fs -ls / 1.2. 上传文件 [yun@mini ...
 - [原创]Javascript模拟“类”的综合实现方式以及部分细节【截至ES6】
			
[原创]Javascript模拟“类”的综合实现方式以及部分细节[截至ES6] 前言 最近几个旧项目里使用的图片编辑插件出现Bug, 经Review 后确定需要在其内外均做些改动,但是头疼的发现部 ...
 - JMETER content-type增加
			
Jmeter—3 http请求—content-type与参数 本文讲三种content-type以及在Jmeter中对应的参数输入方式 第一部分:目前工作中涉及到的content-type 有三种: ...
 - vue 去除前后空格trim
			
一.使用trim修饰符 <input v-model.trim = "massage" > 二.使用filter过去属性 html: <ul id="l ...