<select id="getUser" parameterType="map" resultType="User">
SELECT * FROM users
WHERE 1=1
<if test="id != null">
AND id = #{id}
</if>
<if test="username != null">
AND username = #{username}
</if>
</select>
在上述例子中,<if> 元素用于根据传递的参数动态生成查询条件。如果传递了 id 参数,那么会在SQL语句中添加 AND id = #{id},如果传递了 username 参数,会在SQL语句中添加 AND username = #{username}。
关键点解释:
- test 属性指定了条件表达式,如果条件为真(非null且非空字符串),则包含 <if> 元素内的内容。
- #{id} 和 #{username} 是MyBatis的参数占位符,用于接收传递进来的参数值。
这使得SQL语句在运行时根据不同的条件动态生成,从而实现了灵活的查询。
需要注意的是,MyBatis的动态SQL功能可以通过 <choose>、<when>、<otherwise> 等元素组合使用,以构建更复杂的条件判断结构。这提供了灵活性,使得可以根据不同的场景生成不同的SQL语句。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7019/MyBatis