Mybatis使用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如下:
首先使用模糊查询检索英文。启动项目,输入英文“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分页及模糊查询功能实现
mybatis中分页有3种方式来实现,通过sql语句(两种传参方式)来实现,通过mybatis 的 Rowbounds 来实现. 通过(自定义类型)传参 来实现分页: 映射文件: <select id="findListBypage" parameterType="cn.wh.util.PageUtil" resultType="Role"> select * from t_role limit #{index},#{size} &l
-
mybatis 模糊查询的实现方法
mybatis 模糊查询的实现方法 mybatis的逆向助手确实好用,可以省去很多编写常规sql语句的时间,但是它没办法自动生成模糊查询语句,但开发中模糊查询是必不可少的,所以,需要手动对mapper编写模糊查询功能. 这里先明确MyBatis/Ibatis中#和$的区别: 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解
-
MyBatis中的模糊查询语句
其实就只有一条sql语句 <select id = "search" resultType = "material"> select material_id,material_num,material_name,material_type,material_model,id from material where material_name like '%${value}%' or material_num like '%${value}%' </
-
Mybatis中的like模糊查询功能
1. 参数中直接加入%% param.setUsername("%CD%"); param.setPassword("%11%"); <select id="selectPersons" resultType="person" parameterType="person"> select id,sex,age,username,password from person where true &
-
Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办
项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. try { realName = new String(realName.getBytes("GBK"), "UTF-8"); } catch (UnsupportedEncodingException exce
-
Mybatis mysql模糊查询方式(CONCAT多个字段)及bug
目录 Mybatis mysql模糊查询及bug 解决方案:一 解决方案:二 mybatis多个字段如何模糊查询一个值 Mybatis mysql模糊查询及bug 先看下如下xml SELECT t.id, t.mobile, t.account_name FROM t_account t WHERE 1=1 <if test="keyWord !=null and keyWord !=''"> and CONCAT(t.id,t.mobile,t.account_name
-
MySQL模糊查询用法大全(正则、通配符、内置函数)
SELECT * from table where username like '%陈哈哈%' and hobby like '%牛逼' 这是一条我们在MySQL中常用到的模糊查询方法,通过通配符%来进行匹配,其实,这只是冰山一角,在MySQL中,支持模糊匹配的方法有很多,且各有各的优点.好了,今天让我带大家一起掀起MySQL的小裙子,看一看模糊查询下面还藏着多少鲜为人知的好东西. 一.MySQL通配符模糊查询(%,_) 1-1. 通配符的分类 "%" 百分号通配符: 表示任何字符出现
-
深入探究Mysql模糊查询是否区分大小写
前言 近期,一直在忙着写一个小小的个人博客项目,在实现 "全局搜索" 功能时,发现mysql模糊查询语句有点儿神奇(本小白刚刚步入编程阶段,所以可能让大家见笑了,哈哈哈),有时候 mysql模糊查询语句区分大小写,有时候 mysql查询语句又不区分度大小写,于是,做了很多次实验,得出以下结论(可能有不对的地方,欢迎大佬们可以指出我的不足,也欢迎小伙伴们可以一起讨论问题!) 先来介绍一下COLLATE,COLLATE通常是和数据编码(CHARSET)相关的,一般来说每种CHARSET都有
-
解决mysql模糊查询索引失效问题的几种方法
我们在使用like %通配符时常常会引起索引失效的问题. 这里,我们讨论一下like使用%的几种情况: 下列例子用到的索引(VC_STUDENT_NAME) 一.like 'xx%' EXPLAIN select * from t_student where VC_STUDENT_NAME like '王%' 我们发现使用%不放在开头的时候,索引是有效的 二.like '%xx' EXPLAIN select * from t_student where VC_STUDENT_NAME like
-
浅谈MySQL模糊查询中通配符的转义
sql中经常用like进行模糊查询,而模糊查询就要用到百分号"%",下划线"_"这些通配符,其中"%"匹配任意多个字符,"_"匹配单个字符.如果我们想要模糊查询带有通配符的字符串,如"60%","user_name",就需要对通配符进行转义,有两种方式.如下: 1.反斜杠是转义符,通过反斜杠来转义%,使其不再是通配符.这里第一个%是通配符,第二个%不是通配符. select perc
-
Mybatis应用mysql存储过程查询数据实例
1.创建mysql存储过程,这是个复杂查询加上了判断,比较复杂 CREATE PROCEDURE searchAllList ( IN tradingAreaId VARCHAR (50), IN categoryName VARCHAR (100), IN intelligenceSort TINYINT UNSIGNED, IN priceBegin DOUBLE, IN priceEnd DOUBLE, IN commodityName VARCHAR (200), IN flag TIN
-
Mybatis CURD及模糊查询功能的实现
命名空间namespace: 配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致! 1.查询(select) select: 接口中的方法名与映射文件中的SQL语句ID 一一对应 id parameterType resultType 案例:根据id查询用户 1.写接口(在UserMapper中添加对应的方法) public interface UserMapper { //根据ID查询用户 User getuserByID(int id); } 2.U
-
MySql模糊查询json关键字检索方案示例
目录 前言 方案一: 方案二: 方案三: 方案四(最终采用方案): 总结 前言 最近在项目中遇到这样一个需求:需要在数据表中检索包含指定内容的结果集,该字段的数据类型为text,存储的内容是json格式,具体表结构如下: CREATE TABLE `product` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '产品名称
随机推荐
- FireFox下的MediaPlayer插件(可以正常播放mediaplayer)
- 使用jQuery简单实现模拟浏览器搜索功能
- VBS教程:方法-GetTempName 方法
- Java 获取本机的IP与MAC地址实现详解
- 跟老齐学Python之不要红头文件(2)
- asp.net网络数据库开发实例精解 源文件
- php在字符串中查找另一个字符串
- php实现首页链接查询 友情链接检查的代码
- JavaScript事件列表解说
- mysql去重的两种方法详解及实例代码
- Node.js简单入门前传
- 如何编写jquery插件
- 利用Jquery队列实现根据输入数量显示的动画
- PowerShell包含另一个脚本文件和获取当前脚本所在目录的方法例子
- 阿里云Centos配置iptables防火墙教程
- Java数据结构之数组(动力节点之Java学院整理)
- asp.net创建事务的方法
- jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
- js实现对table动态添加、删除和更新的方法
- 一段利用WSH获取登录时间的jscript代码