oracle mybatis动态sql when怎么用
时间: 2023-08-21 15:02:51 浏览: 48
在 MyBatis 动态 SQL 中,`<choose>` 标签提供了多个 `<when>` 标签的选择分支,类似于 Java 中的 switch 语句,可以根据条件选择不同的分支执行相应的 SQL 语句。
`<when>` 标签的使用方法如下:
```xml
<select id="selectUsers" resultType="User">
SELECT * FROM user
<where>
<choose>
<when test="name != null and age != null">
AND name = #{name} AND age = #{age}
</when>
<when test="name != null">
AND name = #{name}
</when>
<when test="age != null">
AND age = #{age}
</when>
<otherwise>
AND 1=1
</otherwise>
</choose>
</where>
</select>
```
上面的例子中,`<choose>` 标签包含多个 `<when>` 标签和一个 `<otherwise>` 标签,其中 `<when>` 标签用于设置条件分支,`<otherwise>` 标签用于设置默认分支。
可以使用 `test` 属性来设置条件,满足条件的分支会被执行,执行完毕后会跳出 `<choose>` 标签。
在上面的例子中,如果 `name` 和 `age` 都不为空,则会执行第一个 `<when>` 标签中的 SQL 语句,否则会执行第二个或第三个 `<when>` 标签中的 SQL 语句,如果都不满足,则会执行 `<otherwise>` 标签中的 SQL 语句。
需要注意的是,`<choose>` 标签中,只有 `<when>` 标签的 `test` 条件满足时,才会执行该标签下面的 SQL 语句,如果多个 `<when>` 标签的条件都满足,只有第一个满足条件的分支会被执行。