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,运行一下程序,完全解决。
给自己长个记性,遇到问题不能慌,讲究方式方法。也分享给大家,让遇到相同问题的朋友少走个弯路。