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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!