在整合SSH的时候,我往数据库插入一条中文数据会报错
ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Incorrect string value: '\xE6\xB2\x88\xE9\x9B\xAA...' for column 'username' at row 1
我一看这肯定是编码问题啊,于是我试了一条英文数据,就不会报错了。那我得让他能插入中文数据呀~!于是我百度了,看到了一篇文章。
1、一般情况我们使用的mysql方言为:org.hibernate.dialect.MySQL5Dialect
默认返回的是
@Override
public String getTableTypeString() {
return " ENGINE=InnoDB";
}
2.那我们改一下不就好,于是我重写了一个类,把这个方法重写了一下。
package com.hb.utf8;
import org.hibernate.dialect.MySQL5InnoDBDialect;
/**
***********************************
*
*@类名 MySQL5DialectUTF8
*@时间 2017年7月13日下午5:07:28
*@作者 沈雪冰
*@描述
*
***********************************
*/
public class MySQL5DialectUTF8 extends MySQL5InnoDBDialect{
@Override
public String getTableTypeString() {
return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
}
}
3.修改配置文件
将以下代码
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
修改为我自己定义的类:
<property name="dialect">com.hb.utf8.MySQL5DialectUTF8</property>
我一般在创建URL的时候都会加上这个:?useUnicode=true&characterEncoding=UTF-8
jdbc:MySQL://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8
问题大功告成了~~~!!!美滋滋