mybatis动态sql的if标签用法,给出一个正确的判断示例
时间: 2024-11-29 18:35:04 浏览: 16
MyBatis使用动态SQL的if标签
MyBatis 的 `if` 标签用于条件性的执行SQL语句,它允许你在映射文件中根据特定的条件是否满足,插入、更新或者删除数据。其基本语法如下:
```xml
<select id="selectUsers" parameterType="map" resultType="User">
<if test="name != null">
SELECT * FROM user WHERE name = #{name}
</if>
<else>
SELECT * FROM user
</else>
</select>
```
在这个例子中,如果传入的 `name` 参数不为 `null`,则会执行第一个 `<if>` 下的 SQL 语句;否则,执行 `<else>` 部分的默认查询。
判断示例:
```xml
<update id="updateUser">
<set>
<if test="newPassword != null">
password = #{newPassword},
</if>
<if test="oldPassword != null and oldPassword == confirmPassword">
is_password_changed = true,
</if>
</set>
UPDATE user SET
<if test="newPassword != null">
password = #{newPassword},
</if>
<if test="oldPassword != null and oldPassword == confirmPassword">
is_password_changed = #{isPasswordChanged},
</if>
where id = #{id}
</update>
```
这里,只有当`newPassword`不为空并且`oldPassword`验证通过时才会设置`password`和`is_password_changed`字段。
阅读全文