博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jdk8+Mybatis3.5.0+Mysql读取LongBlob失败
阅读量:5300 次
发布时间:2019-06-14

本文共 1992 字,大约阅读时间需要 6 分钟。

问题:在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
{ // 指定字符集 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代码

 

转载于:https://www.cnblogs.com/HackerBlog/p/10697062.html

你可能感兴趣的文章
mysql中key 、primary key 、unique key 与index区别
查看>>
bzoj2257
查看>>
Linux查看文件编码格式及文件编码转换<转>
查看>>
Leetcode: Find Leaves of Binary Tree
查看>>
Vue 模板解释
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>