mybatis like 模糊匹配的格式是什么样的

第一种
<if test="deviceName != null and deviceName != ''" >
            AND DEVICE_NAME LIKE '%${deviceName}%' 
</if>
第二种
AND DEVICE_NAME LIKE #{deviceName}

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

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

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

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