根据搜索框给定的关键词,模糊搜索用户名和账号都匹配的用户集合
<select id="list" parameterType="com.user.UserInfo" resultType="com.user.UserInfo">
SELECT
*
FROM
user
WHERE
1 = 1
<if test="searchParam != null and searchParam != ''">
AND CONCAT(user_name, user_account) LIKE CONCAT('%',#{searchParam},'%')
</if>
</select>
但是以上查询中,如果user_name 或者 user_account 中任意一个属性的值为null时,则以上语句都查不到数据:比如user_account字段未赋值,默认为null,即使user_name 值包含查询的关键字,也查询不到数据。
两种解决方法:
1.给可能为null的查询字段设置默认值,空字符串或者其他;
2.改用or连接多个模糊查询
AND CONCAT(user_name, user_account) LIKE CONCAT('%',#{searchParam},'%')
改为
AND user_name like CONCAT('%',#{searchParam},'%')
or user_account like CONCAT('%',#{searchParam},'%')

本文探讨了在MyBatis中使用模糊搜索时遇到的问题,当查询字段可能为null时,如何调整SQL语句以确保搜索功能的准确性。提出了两种解决方案:设置默认值或使用OR连接多个模糊查询条件。
1994

被折叠的 条评论
为什么被折叠?



