当前位置: 移动技术网 > IT编程>开发语言>Java > Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办

Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办

2019年07月22日  | 移动技术网IT编程  | 我要评论

项目开发中,在做mybatis动态查询时,遇到了一个问题:mysql在进行like模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空。

由于是使用get方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码。

try {
realname = new string(realname.getbytes("gbk"), "utf-8");
} catch (unsupportedencodingexception exception) {
logger.error("realname在进行utf-8编码时出错," + exception.tostring());
}

mybatis动态sql映射,具体的sql如下:

这里写图片描述

首先使用模糊查询检索英文。启动项目,输入英文“test”,按照英文内容检索得到的结果如下图:

这里写图片描述

我们可以看到sql正常执行,使用“test”总共检索出2条结果,数据库中对应字段的内容分别是张三test02和张三test,正常来说,如果我们输入中文“张”也可以查询到这两条数据,下面试试使用模糊查询检索中文。启动项目,输入中文“张”,检索得到结果如下图:

这里写图片描述

我们可以看到这里检索出的结果是0条记录,并且条件的中文内容没有乱码,和预想中的并不一样。复制同样的sql语句到sqlyog中执行是可以正常检索出结果的。

在使用sqlserver时并没有出现过这样的问题,这次使用mysql才出现这种情况,怀疑是在mybatis配置数据源environment时sqlserver和mysql配置的内容有差异,仔细对比并上网查阅相关内容后发现,mysql在进行中文检索时,需要在jdbcurl后增加参数useunicode=true&characterencoding=utf-8来指定编码格式。

这里写图片描述

完整的url:

jdbc:mysql://127.0.0.1:3306/fanyl_web?useunicode=true&characterencoding=utf-8

在修改了mysql的jdbcurl后,启动项目,继续输入中文“张”,检索得到结果如下:

这里写图片描述

总共检索出3条结果,至此mybatis使用mysql进行模糊查询时输入中文检索不到结果的问题就解决了。

另外再附上mysql的jdbcurl中常见的几个参数说明:

以上所述是小编给大家介绍的mybatis使用mysql模糊查询时输入中文检索不到结果怎么办,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网