Spring+hibernate+Mysql 中文模糊查询不出结果的解决方案

今天在实现Spring+hibernate+Mysql 中文模糊查询时发现,hql竟然不支持中文,但是英文字母等都是可以的。究竟是为什么呢?

1.控制台打印的sql语句完全正确,不存在乱码的现象。

2.Mysql数据库也是采用的UTF-8的字符集。

3.Hql语句拼接不行(如:"from Entity t where t.name like '%"+key+"%'")、占位符传参也不行。

 

弄了一两个小时,还是找不到头绪(心里那个恼火啊!)。憋到最后用了下别的数据库,同样的Hql,sqlserver是可以的。看来问题就出在数据库上了。

锁定问题所在就好办了,于是在寻找了几十分钟终于找到答案。

解决办法很简单,只需要在配置数据库的url中加上  "?useUnicode=true&characterEncoding=UTF-8"即可。

比如jdbc:mysql://localhost:3306/xxxx?useUnicode=true&characterEncoding=UTF-8,运行一下程序,完全解决。

 

给自己长个记性,遇到问题不能慌,讲究方式方法。也分享给大家,让遇到相同问题的朋友少走个弯路。

 

 

posted @ 2013-07-23 14:54  孙泉  阅读(781)  评论(0)    收藏  举报