时间:2021-05-20
项目开发中,在做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模糊查询时输入中文检索不到结果怎么办,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
qq语音对方听不到我的声音怎么办 qq除了可以文字输入聊天之外,还可以语音和视频。但语音时却发现对方听不到我的声音怎么办? 下面,我们就来看看qq语音故障解决
mybatis模糊查询的实现方法mybatis的逆向助手确实好用,可以省去很多编写常规sql语句的时间,但是它没办法自动生成模糊查询语句,但开发中模糊查询是必不
模糊查询也是数据库SQL中使用频率很高的SQL语句,使用MyBatis来进行更加灵活的模糊查询。直接传参法直接传参法,就是将要查询的关键字keyword,在代码
背景使用mybatis查询(mysql)时,会使用多个double字段做相加,但是呢,其中几个字段有可能是null,会抛空指针。解决方法自动生成的mybatis
MySQL对中文进行排序详解MySQL默认只支持对日期、时间和英文字符串进行排序,如果对中文进行orderby很可能得不到想要的结果,如下面的查询并不会按我们所