mapper 文件中<when></when> 标签 和<if></if>用法
时间: 2023-11-02 11:12:19 浏览: 81
Mybatis中Mapper映射文件使用详解
在 MyBatis 中,<when></when> 标签和<if></if>标签都是用来控制 SQL 语句的执行条件的。
<if></if> 标签是用来判断某个条件是否成立,如果成立,就会执行 if 标签中的 SQL 语句。例如:
```
<select id="findUserByName" parameterType="string" resultType="User">
SELECT * FROM users
WHERE 1 = 1
<if test="name != null">
AND name = #{name}
</if>
</select>
```
这里的<if></if>标签中的 test 属性的值表示判断条件,如果条件成立,则执行<if></if>标签中的 SQL 语句,否则不执行。这里的条件是判断传入的参数 name 是否为 null,如果不为 null,则会执行 AND name = #{name} 这一行 SQL 语句。
<when></when> 标签是用来组合多个<if></if>标签的。例如:
```
<select id="findUsers" parameterType="map" resultType="User">
SELECT * FROM users
WHERE 1 = 1
<when test="gender != null">
<if test="gender == 'male'">
AND gender = 'M'
</if>
<if test="gender == 'female'">
AND gender = 'F'
</if>
</when>
</select>
```
这里的<when></when>标签中的 test 属性的值表示判断条件,如果条件成立,则执行<when></when>标签中的 SQL 语句,否则不执行。这里的条件是判断传入的参数 gender 是否为 null,如果不为 null,则会执行<when></when>标签中的<if></if>标签中的 SQL 语句,这里的<if></if>标签也是用来判断条件的。如果 gender 的值为 'male',则执行 AND gender = 'M' 这一行 SQL 语句;如果 gender 的值为 'female',则执行 AND gender = 'F' 这一行 SQL 语句。
阅读全文