2 diversity1 diversity1 于 2016.01.22 16:16 提问

mybatis like 模糊匹配的格式是什么样的
第一种
<if test="deviceName != null and deviceName != ''" >
            AND DEVICE_NAME LIKE '%${deviceName}%' 
</if>
第二种
AND DEVICE_NAME LIKE #{deviceName}

第一种之前试过是可以模糊匹配的,后来又不好用了,什么情况
还有说法是直接写like mybatis会自动加上%% 求正解

3个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.01.22 16:33

第一种写法没错啊,你说的不好用的情况是什么样的呢?这个进入模糊匹配是有if条件的,符合该条件时才会有模糊查询的。

a8761087
a8761087   Rxr 2016.01.22 16:44
第一种写法本身无问题。你说的不好用肯定是你改了代码  里deviceName  参数值 为'%deviceName的值%',因为你传入的参数里已经有了'%%',所有第二种解析#{deviceName}  就相当于AND DEVICE_NAME LIKE ''%deviceName的值%。用上面那种写法deviceName的值里不能有'%',你要理解传的到底是什么,为什么能模糊查询。

diversity1
diversity1 好的可以了,封装了那部分主要还是没明白原理
2 年多之前 回复
a8761087
a8761087 你在传入deviceName值前看一下这个参数的值就明白了,看你现在的代码你的deviceName里面肯定有%号
2 年多之前 回复
sun2015_07_24
sun2015_07_24   2016.01.22 17:07

and DEVICE_NAME like '%${deviceName}%'
and DEVICE_NAME like concat('%', #{deviceName}, '%')

sun2015_07_24
sun2015_07_24 回复diversity1: 加油,用多了就会懂了,
2 年多之前 回复
diversity1
diversity1 好的可以了,封装了那部分主要还是没明白原理
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Mybatis中文模糊搜索匹配不上的问题
由于在上班的时候会抽一些空闲的时间来做毕业设计,所以毕业设计经常会在不同环境下进行开发,遇到这个问题是我在公司机器上开发时候没遇到的问题,而晚上下班回到家里用自己的机器调试的时候发现了,当我使用模糊搜索的时候中文竟然没用?只能使用英文,而在公司机器上是不存在这个问题的,我首先想到的是编码问题,但是我一调试,在后端Controller里接收到并赋值到实体中的对象并不是乱码,是没有问题的。
Mybatis如何使用like实现模糊匹配
Talk is cheap方式一:select * from t_user where name like ' %${value}% '方式二:select * from t_user where name like '%'||${value}||'%' 方式三select * from t_user where name like #{do_it_in_java}
Mybatis解决sql中like通配符模糊匹配
针对oracle数据库: 1、将查询条件通过功能类处理 /** * Description: 处理转义字符%和_,针对ORACLE数据库 * * @param str * @return */ public static String escapeStr(String str) { String temp = ""; for (int i = 0; i < st
[MyBatis]模糊查询LIKE的三种方式
模糊查询也是数据库SQL中使用频率很高的SQL语句,使用MyBatis来进行更加灵活的模糊查询。 直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中。 public void selectBykeyWord(String keyword) { String id
Mybatis中使用like模糊查询
id="getcheckedinfo_sql" parameterType="map" resultMap="CQ_output"> SELECT refid="col_checked"/> FROM checkquestion_table WHERE statuscode like "%"#{statuscode}"%"
MyBatis 模糊匹配
s
Mybatis中oracle、mysql的like模糊查询
select id=&quot;searchUserBySearchName&quot; parameterType=&quot;java.lang.String&quot; resultType=&quot;com.urm.entity.User&quot;&gt; select * from t_user where user_name like CONCAT('%',#{search_name},'%') select&gt; select id=&quot;sear
Mybatis多个字段模糊匹配同一个值
需求: 搜索框中可输入手机号,姓名,地址查询,后台需要对一个框中的多个字段做匹配查询。可以在sql语句中做拼接条件查询: <if test="condition!=null and condition!=''"> AND CONCAT(r.name,a.name,a.phone,a.addr_detail) LIKE '%' #{condition} '%' </if>
mybatis里面的mysql和oracle简单模糊查询
mysql和oracle模糊查询都可以用下面语句: select * from V_IB_BATCHCN v  where  v.FCUSTOMERNAME   like CONCAT(CONCAT('%', #{fcustomername}), '%')
MyBatis实现模糊查询的几种方式
在学习MyBatis过程中想实现模糊查询,可惜失败了。后来上百度上查了一下,算是解决了。记录一下MyBatis实现模糊查询的几种方式。   数据库表名为test_student,初始化了几条记录,如图:         起初我在MyBatis的mapper文件中是这样写的: <select id="searchStudents" resultType="com.example.e