mybatis与concat实现模糊查询、mybatis中模糊查询concat传入参数为空时的解决方法
文章目录
在mybatis中,一般模糊查询like习惯用concat进行拼接,但是当传入的参数为空时,查询不出数据。
那是因为concat中,若传入参数为null, 则返回null。
以下整理mybatis中like模糊查询的写法
<select id="findByKeyword" resultMap="BaseResultMap">
select * from user
<where>
1=1
<if test="keyword!=null and keyword!=''">
AND user_name like CONCAT('%',#{keyword},'%')
</if>
</where>
</select>
因为keyword可能为null, 所以先在外层对keyword参数进行判空处理。
或者通过ifnull函数对参数进行一下判断,若传入参数为null,则转换为空字符串
<select id="findByKeyword" resultMap="BaseResultMap">
select * from user
where user_name like CONCAT('%',ifnull(#{keyword},''),'%')
</select>