Java代码
public class StringTypeHandler implements TypeHandler<Object> {
private static Logger logger = org.slf4j.LoggerFactory.getLogger(StringTypeHandler.class);
private static String ISO88591_ENCODE = "ISO8859_1";
private static String UTF8_ENCODE = "UTF-8";
private static String GBK_ENCODE = "GBK";
public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
try {
String paramStr = null;
if (null != parameter) {
paramStr = (String) parameter;
if (GBK_ENCODE.equals(getEncode(paramStr))) {
if (null != parameter) {
ps.setString(i, new String(((String) parameter).getBytes(GBK_ENCODE), ISO88591_ENCODE));
}
}
}
else {
ps.setString(i, (String) parameter);
}
} catch (UnsupportedEncodingException e) {
ps.setString(i, (String) parameter);
logger.debug("StringTypeHandler encode Exception");
}
}
public Object getResult(ResultSet rs, String columnName) throws SQLException {
try {
if (null != rs.getString(columnName)) {
String columnValue = rs.getString(columnName);
if (ISO88591_ENCODE.equals(getEncode(columnValue))) {
return new String(rs.getString(columnName).getBytes(ISO88591_ENCODE), GBK_ENCODE);
}
}
} catch (UnsupportedEncodingException e) {
logger.debug("StringTypeHandler encode Exception");
}
return rs.getString(columnName);
}
public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {
return cs.getString(columnIndex);
}
//返回编码格式
private String getEncode(String str) {
String encode = null;
if (verifyEncode(str, GBK_ENCODE)) {
encode = GBK_ENCODE;
} else if (verifyEncode(str, ISO88591_ENCODE)) {
encode = ISO88591_ENCODE;
} else if (verifyEncode(str, UTF8_ENCODE)) {
encode = UTF8_ENCODE;
}
return encode;
}
//判断编码格式是否相符
private boolean verifyEncode(String str, String encode) {
try {
if (str.equals(new String(str.getBytes(encode), encode))) {
return true;
}
} catch (UnsupportedEncodingException e) {
logger.debug("StringTypeHandler encode UnsupportedEncoding");
}
return false;
}
配置文件
<typeHandlers>
<typeHandler javaType="String" jdbcType="VARCHAR" handler="com.betdemo.interceptor.StringTypeHandler" />
</typeHandlers>
分享到:
相关推荐
这是一个简单实用的scala集成mybatis数据库查询代码,简单明了
mybatis数据库逆向工程mybatis数据库逆向工程mybatis数据库逆向工程mybatis数据库逆向工程
Mybatis数据库的基本应用,增加、删除、修改、查看等功能
java中实现mybatis访问数据库
spring多数据源的处理_mybatis实现跨库查询
基于springboot+mybatis的数据库加解密源码+sql数据库.zip 基于springboot+mybatis的数据库加解密源码+sql数据库.zip 基于springboot+mybatis的数据库加解密源码+sql数据库.zip 该项目是个人毕设项目源码,评审分...
mybatis乱码的解决方法 gbk iso-8859-1 ibatis3乱码
mybatis多条件查询处理方案(查询条件为数据库字段非传递参数)
MyBatis数据库操作代码自动生成器。里面有使用说明,有运行脚本,只是简单改下路径即可。自动生成数据操作代码,表数据对象,减少N多代码编写工作量,方便高效,是编程开发的良师益友。
SpringBoot简单项目开发,适应初学者,整合mybatis,页面简单测试,数据Md5加密
springboot2.0+mybatis主从数据库双数据源,测试了事务,事务是单独分开的。回滚只回滚主库的事务。
mybatis数据库分页Spring原生例子
Mybatis 处理 CLOB、BLOB 类型数据
mybatis数据库配置文件连接,写在.xml文件中
如果是eclipse工具,直接生成的,则替换:plugins/org.mybatis.generator.core_1.3.2*****.jar,如果是其他方式则直接替换掉官方的mybatis-generator-core1.3.2.jar即可
jsq+mybatis+mysql中文乱码的详细方案。
Mybatis数据库表自动生成entity,dao接口,mapper.xml附件
一个简单的mybatis数据库CRUD操作
mybatis动态创建数据库表,支持数据库表动态创建,数据插入,数据修改
spring boot+mybatis 数据库文件(可选) 启动项目自动生成对应实体的数据库表,示例中自动生成SysUser,User实体对应的数据库表sys_user,user 依赖包文件(可选) maven管理依赖包,自动下载 链接:...