2025年mybatis处理blob类型字段

mybatis处理blob类型字段参考 https blog csdn net kelei2015 article details mysql 数据库中 blob 类型字段 在实体类中表示 private String content 正文内容 处理方法 import org apache commons logging Log

大家好,我是讯享网,很高兴认识大家。

参考:https://blog.csdn.net/kelei2015/article/details/

mysql数据库中blob类型字段


讯享网

在实体类中表示:

private String content; //正文内容

讯享网

处理方法:

讯享网import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.sql.*; / * @description:处理数据库中的blob类型字段 * @author: Administrator * @date: 2019-07-09 15:07 */ public class BlobTypeHandler extends BaseTypeHandler<String> { protected static Log logger = LogFactory.getLog(BlobTypeHandler.class); // 指定字符集 private static final String DEFAULT_CHARSET = "utf-8"; @Override public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException { logger.info("【BlobTypeHandler】insert或者update时处理blob字段:"); //声明一个输入流对象 ByteArrayInputStream bis=null; try { // 把String转化成byte流 //把字符串转为字节流 bis = new ByteArrayInputStream(parameter.getBytes(DEFAULT_CHARSET)); } catch (UnsupportedEncodingException e) { logger.error("【BlobTypeHandler】insert或者update处理blob字段出错,错误原因为:" + e); throw new RuntimeException("Blob Encoding Error!"); }finally { if (bis!= null) { try { bis.close(); } catch (IOException e) { logger.error("【BlobTypeHandler】insert或者update处理blob字段出错,错误原因为:" + e); throw new RuntimeException("Blob Encoding Error!"); } } } ps.setBinaryStream(i, bis, parameter.length()); } @Override public String getNullableResult(ResultSet rs, String columnName) throws SQLException { logger.info("【BlobTypeHandler】query查询时处理blob字段"); Blob blob = rs.getBlob(columnName); byte[] returnValue = null; String result = null; if (null != blob) { //将取出的流对象转为utf-8的字符串对象 returnValue = blob.getBytes(1, (int) blob.length()); } try { if (null != returnValue) { // 把byte转化成string result = new String(returnValue, DEFAULT_CHARSET); } } catch (UnsupportedEncodingException e) { logger.error("【BlobTypeHandler】查询处理blob字段出错,错误原因为:" + e); throw new RuntimeException("Blob Encoding Error!"); } return result; } @Override public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { logger.info("【BlobTypeHandler】query查询时处理blob字段"); Blob blob = cs.getBlob(columnIndex); byte[] returnValue = null; String result = null; if (null != blob) { returnValue = blob.getBytes(1, (int) blob.length()); } try { if (null != returnValue) { //将取出的流对象转为utf-8的字符串对象 return new String(returnValue,DEFAULT_CHARSET ); } } catch (UnsupportedEncodingException e) { logger.error("【BlobTypeHandler】查询处理blob字段出错,错误原因为:" + e); throw new RuntimeException("Blob Encoding Error!"); } return result; } @Override public String getNullableResult(ResultSet rs, int columnName) throws SQLException { logger.info("【BlobTypeHandler】query查询时处理blob字段"); String result = null; Blob blob = rs.getBlob(columnName); byte[] returnValue = null; if (null != blob) { returnValue = blob.getBytes(1, (int) blob.length()); } try { // 把byte转化成string if (null != returnValue) { // result = new String(returnValue, DEFAULT_CHARSET); //将取出的流对象转为utf-8的字符串对象 return new String(returnValue, DEFAULT_CHARSET); } } catch (UnsupportedEncodingException e) { logger.error("【BlobTypeHandler】查询处理blob字段出错,错误原因为:" + e); throw new RuntimeException("Blob Encoding Error!"); } return result; } } 
<?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.xx.xx.mapper.XxxMapper"> <!--&lt;!&ndash; 通用查询映射结果 &ndash;&gt;--> <resultMap id="BaseResultMap" type="com.xx.xx.entity.Test"> <id column="id" property="id" /> <result column="content" property="content" typeHandler="com.shengquan.newneikan.util.BlobTypeHandler"/> </resultMap> <select id="findById" parameterType="Long" resultMap="BaseResultMap"> select * from tets WHERE id=#{id}; </select> </mapper> 

这样保存查询,更新都能正常使用

小讯
上一篇 2025-03-08 15:25
下一篇 2025-03-05 20:22

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/21232.html