文档章节

Mybatis 数据库Blob字段乱码问题

w
 whtzhang
发布于 2016/07/19 13:50
字数 247
阅读 86
收藏 2

mapper.xml中

设置Blob字段

<result property="tibetan_info" column="tibetan_info" typeHandler="com.surfilter.utils.ConvertBlobTypeHandler"/>

 

ConvertBlobTypeHandler.java

 

package com.surfilter.utils;

 

import java.io.ByteArrayInputStream;  

import java.io.UnsupportedEncodingException;  

import java.sql.Blob;  

import java.sql.CallableStatement;  

import java.sql.PreparedStatement;  

import java.sql.ResultSet;  

import java.sql.SQLException;  

 

import org.apache.ibatis.type.BaseTypeHandler;  

import org.apache.ibatis.type.JdbcType;  

 

/** 

 * className:ConvertBlobTypeHandler 

 *  

 * 自定义typehandler,解决mybatis存储blob字段后,出现乱码的问题 

 * 配置mapper.xml: 

 * <result  typeHandler="cn.ffcs.drive.common.util.ConvertBlobTypeHandler"/> 

 *  

 * @author pengyh 

 * @version 1.0.0 

 * @date 2014-07-09 11:15:23 

 *  

 */  

public class ConvertBlobTypeHandler 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 {    

        Blob blob = rs.getBlob(columnName);    

        byte[] returnValue = null;    

        if (null != blob) {    

            returnValue = blob.getBytes(1, (int) blob.length());    

        }    

        try {    

            //###把byte转化成string    

            return new String(returnValue, DEFAULT_CHARSET);    

        } catch (UnsupportedEncodingException e) {    

            throw new RuntimeException("Blob Encoding Error!");    

        }    

    }    

 

    @Override    

    public String getNullableResult(CallableStatement cs, int columnIndex)    

            throws SQLException {    

        Blob blob = cs.getBlob(columnIndex);    

        byte[] returnValue = null;    

        if (null != blob) {    

            returnValue = blob.getBytes(1, (int) blob.length());    

        }    

        try {    

            return new String(returnValue, DEFAULT_CHARSET);    

        } catch (UnsupportedEncodingException e) {    

            throw new RuntimeException("Blob Encoding Error!");    

        }    

    }  

    @Override  

    public String getNullableResult(ResultSet arg0, int arg1)  

            throws SQLException {  

        // TODO Auto-generated method stub  

        return null;  

    }    

}   

本文转载自:

共有 人打赏支持
w
粉丝 0
博文 9
码字总数 414
作品 0
武汉
私信 提问
springboot读写geometry字段,求解答

遇到了一个难题!!!数据库使用的是mysql,表里面有一个geometry字段 后台框架使用过的是Spring Boot集合Mybatis,实体类上对应的是byte[]类型,但是读取出来的数据就会乱码 目前的解决方案...

如漩涡
09/07
201
3
java通过mybatis往mysql数据库插入数据乱码

今天发现了一个问题,通过mybatis往数据库插入数据后,在数据库中所插入的中文乱码,开始以为是mysql编码设置问题,于是设置了mysql数据库的编码,但是不起作用,自己写的sql语句有中文插入也...

留给明天
2016/01/29
63
0
MyBatis Generator 学习说明配置

eclipse 里面使用maven 生成 ,命令: 工程右键 Debug As -> maven build... -> mybatis-generator:generate http://blog.csdn.net/u011310774/article/details/48269031 使用这个可以 快速自......

之渊
2016/11/04
101
0
ORM规约变更经典案例---mysql军规

  先介绍一下《MySQL数据库开发的三十六条军规》,出自58赶集。 写在前面的话: 总是在灾难发生后,才想起容灾的重要性; 总是在吃过亏后,才记得曾经有人提醒过。 (一)核心军规 (1)不在数...

静儿1986
06/12
0
0
Mybatis-Plus 2.0.9 发布,简化开发 mybatis 快速入门

Mybatis-Plus是一款 myBatis 动态 sql 自动注入 crud 简化 增 删 改 查 操作中间件。启动加载 XML 配置时注入 mybatis 单表 动态 sql 操作 ,为简化开发工作、提高生产率而生。Mybatis-Plus ...

青苗
2017/06/26
4.8K
13

没有更多内容

加载失败,请刷新页面

加载更多

EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
3
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
6
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
7
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
5
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部