发布网友 发布时间:1天前
共1个回答
热心网友 时间:1天前
在Mybatis中,动态SQL的if标签和where标签可以巧妙地结合,以实现灵活的查询条件。假设我们的需求是根据电话和名字查找用户数据。
初始的SQL查询可能看起来像这样:
SELECT * FROM users WHERE mobile LIKE '%{mobile}' AND gender = #{gender}
在Mapper.xml文件中,配置的动态SQL如下:
<select id="getUserByPhoneName">
SELECT * FROM users
<choose>
<when test="gender != null">
AND gender = #{gender}
</when>
<otherwise>
-- 如果gender未传,则不添加此条件
</otherwise>
</choose>
AND mobile LIKE #{mobile}
</select>
在代码块2-2中,我们对性别条件进行了改进,使用if标签来判断,仅当gender为0或1时执行查询,代码如下:
<if test="gender != null">
AND gender = #{gender}
</if>
如果要查询所有用户信息而不指定gender和username,可以修改代码块2-3,移除if标签:
<!-- 移除if标签 -->
AND mobile LIKE #{mobile}
总结,通过结合if标签,我们可以灵活地根据传入的参数动态调整SQL查询条件。这在处理不同场景下的用户查询时显得尤其有用。