文档章节

Mybatis中mysql blob类型乱码解决

Fraud
 Fraud
发布于 2016/05/06 11:03
字数 305
阅读 891
收藏 1
点赞 1
评论 0

解决方法:

1,写一个 typehandler

package com.aes.util;

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;

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 {  
        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 rs, int index) throws SQLException
	{
		Blob blob = rs.getBlob(index);  
        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!");  
        }  
	}  
}


2,修改mybatis配置文件

<resultMap type="com.aes.wfm.model.ActHiComInfo" id="actHiComInfo">  
        <id column="id" property="id"/>
        <result column="userId" property="userId"/>
        <result column="startTime" property="startTime"/>
        <result column="endTime" property="endTime"/>
        <result column="taskName" property="taskName"/>
        <result column="message" property="message"/>
        <result column="fullMsg" property="fullMsg" typeHandler="com.aes.util.MyBlobTypeHandler"/>
</resultMap>


© 著作权归作者所有

共有 人打赏支持
Fraud
粉丝 39
博文 36
码字总数 25050
作品 0
程序员
使用mysql group_concat函数的陷阱

开发中我的mysql 中使用了group_concat,然后导出的内容发现是乱码,如下图 运行了下sql语句,发现records字段和needs字段类型是blob二进制类型 BLOB (binary large object),二进制大对象,...

chenfj_fer
01/24
0
0
mysqldump 导出中文乱码

mysqldump 导出中文乱码 能检查的也都正常 1、通过navicat上做导出都是正常的 2、接着去检查数据库里编码,看也都是正常 show variables like 'char%'; +--------------------------+-------...

holy2009
2017/07/25
0
0
JDBC读取MySQL的BLOB类型

今天写了个SQL查数据库,需要根据id分组,然后将同一分组中某几列的值都平铺开来,网络上查了下,MySQL中的 GROUP_CONCAT 函数,还是很好用的,SQL 大致写成如下: select , GROUPCONCAT(con...

Breath_L
2012/06/21
0
3
Mybatis 数据库Blob字段乱码问题

mapper.xml中 设置Blob字段 <result property="tibetaninfo" column="tibetaninfo" typeHandler="com.surfilter.utils.ConvertBlobTypeHandler"/> ConvertBlobTypeHandler.java package com......

whtzhang
2016/07/19
49
0
Mybatis--JavaType和JdbcType对应关系

Mybatis中javaType和jdbcType对应关系 一,问题描述 我们在进行数据库编程时,常常记不住不同的数据库的数据类型对应于Java中的哪种类型, 今天我们来用一篇博客来记录下下! 二,解决方案 ...

fajor
2016/08/11
80
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
让MyBatis Generator产生的代码支持分页

本文提供一种方法,让MyBatis Generator产生的代码支持分页, 适用于MySQL。 分析 如果要获取分页信息,使用MySQL语句,我们需要怎么做呢? 在MySQL系统中,如果要完成一个分页,我们需要指定...

王孟君
2016/11/09
797
0
mybatis-generator相关(二)

上一篇对mybatis-generator-core源码的基础修改作了说明,也可以说是最想改的地方,这一篇将在此基础上再做进一步的修改。 首先说说上一篇最后提到的关于自定义注释的问题,想实现这个功能就...

dmrs
2015/11/24
43
0
java通过mybatis往mysql数据库插入数据乱码

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

留给明天
2016/01/29
63
0
Mybatis 分页插件 PageHelper 5.0.0 发布

Mybatis分页插件 - PageHelper PageHelper 5.0.0 发布了。如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页,部分特殊情况请...

Liuzh_533
2017/01/03
17.5K
37

没有更多内容

加载失败,请刷新页面

加载更多

下一页

中国开始生产自主设计x86 CPU,由AMD授权

7 月 10 日报道,美媒称,中国正试图摆脱对美国公司的依赖并开发自己的芯片。据报道,中国制造商天津海光先进技术投资有限公司开始生产中国自主设计的“禅定”x86 中央处理器(CPU)。 7 月 ...

六库科技
8分钟前
0
0
Vue.js-自定义事件例子

自定义组件的 v-model 2.2.0+ 新增 一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value 特性用于不同的目的。m...

tianyawhl
8分钟前
0
0
mybatis中获取sqlSession的源码分析

0 SqlSessionFactoryBuilder类 SqlSessionFactoryBuilder sqlSessionFacotory=SqlSessionFactoryBuilder().build(reader) public SqlSessionFactory build(Reader reader) { return build(re......

writeademo
9分钟前
0
0
RobotThread.cpp

#include "RobotThread.h"RobotThread::RobotThread(int argc, char** pArgv, const char * topic) :m_Init_argc(argc), m_pInit_argv(pArgv), m_topic(topic){/** ......

itfanr
11分钟前
0
0
防御ddos攻击的常见方法

DDoS攻击是一种特殊形式的拒绝服务攻击。它利用多台已经被攻击者所控制的机器对某一台单机发起攻击,在带宽相对的情况下,被攻击的主机很容易失去反应能力。分布式拒绝服务攻击(DDoS) 是一种...

上树的熊
12分钟前
0
0
Vue全家桶问题合集(很多eslint规范问题)

自己使用Vue全家桶问题合集(很多eslint规范问题) 遇到很多问题一一道来。 1.vue报错 Do not use built-in or reserved HTML elements as component id:header 组件,不能和html标签重复 he...

kisshua
14分钟前
0
0
Spring框架中的设计模式(四)​

Spring框架中的设计模式(四) 本文是Spring框架中使用的设计模式第四篇。本文将在此呈现出新的3种模式。一开始,我们会讨论2种结构模式:适配器和装饰器。在第三部分和最后一部分,我们将讨...

瑞查德-Jack
18分钟前
0
0
如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联

随着微信小程序新功能、新入口的不断更新,小程序的商业价值逐步增强,特别是小程序与公众号的深度融合,已经让小程序成为各行业新的营销渠道。Jeewx平台专注小程序的开发,逐步完善小程序生...

Jeecg
24分钟前
0
0
IDEA开发vue.js卡顿

由于新项目使用了vue.js。在执行cnpm install后会在node_modules这个文件下面生成vue的相关依赖文件,这个时候当执行npm run dev命令时,会导致IDEA出现卡死的问题。 解决办法:在idea中设置...

落雪飞声
26分钟前
0
0
js模块化编程之彻底弄懂CommonJS和AMD/CMD!

先回答我:为什么模块很重要? 答:因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。 但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你...

娇娇jojojo
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部