mybatis LIKE
<sql id="selectId"> `ID` AS id, `NAME` AS name, `DESCRIPTION` AS description, `TYPE` AS type, `CAPACITY` AS capacity </sql> <select id="getStorageList" parameterType="String" useCache="false" resultType="StorageTO"> select <include refid="selectId"/> from STORAGE_INFO <where> 1 = 1 <if test="name != null and name != ''"> `NAME` LIKE CONCAT('%',#{name},'%') </if> </where> ORDER BY `ID` DESC </select>
扩展:mysql like查询,_和%查询无效的问题
1、表中有三条数据,其中NAME可以有特殊字符
2、LIKE查询,查询字符串为_和%
可以看到,查询结果并没有只查出来符合的数据,是将全部数据都查出来了,因为在like查询中,使用%和_来代表任意多个字符和一个字符
3、解决办法,可以使用escape关键字来解决,比如下面的sql
解释:首先将查询字符串修改为 /%,ESCAPE '/',意思是指明查询字符串中的/后面的字符是普通字符,而不是通配符,在这里/后面是%
下划线和%同理