Mybatis使用MySQL进行模糊查询时输入中文检索不到结果
来源:互联网 发布:linux 编译安装php5.5 编辑:程序博客网 时间:2024/06/05 09:00
项目开发中,在做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进行模糊查询时输入中文检索不到结果
- Mybatis使用MySQL进行查询时设置中文检索不到结果
- mysql中文查询不到结果
- 关于mybatis中文参数查询不到结果
- java中使用mysql查询 条件中含有中文时查询不到结果解决方案
- java中使用mysql查询 条件中含有中文时查询不到结果解决方案
- myBatis 操作 mysql时,使用 like 关键进行模糊查询的方法
- 使用moogoDB进行模糊查询查不出结果
- SqlParameter 使用 like模糊 查询不到结果的解决方法
- mysql中文无法进行模糊查询
- Mybatis模糊查询,查询不到中文,却可以查询到英文和数字的一种解决办法
- 【转载】Mybatis使用MySQL模糊查询…
- mybatis 使用oracle char类型查询不到结果
- mybatis的中文查询不到
- MyBatis下动态语句使用like进行模糊查询
- mybatis中使用动态参数进行模糊查询
- MyBatis中非主键查询查不到结果
- 关于Mybatis 中模糊查询查找不到Mysql数据库的内容的问题
- iOS开发小技巧总汇(不定时增添)
- [POJ 3468]A Simple Problem with Integers[树状数组区间更新+求和]
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- 黑马程序员—C语言结构控制和循环
- activity的切换时候无动画的解决办法
- Mybatis使用MySQL进行模糊查询时输入中文检索不到结果
- hdu2010
- 图书管理系统登录菜单的实现
- 程序算法艺术与实践:经典排序算法之插入排序
- Kth Smallest Element in a BST -- leetcode
- session的生命周期
- abstract获取程序运行时间模板
- Oracle临时表 和 插入多条语句 用法
- 【springmvc+mybatis项目实战】杰信商贸-15.细粒度的权限控制+业务上报取消