mybatis的choose when的用法
时间: 2025-01-03 13:29:46 浏览: 9
### MyBatis `choose` 和 `when` 使用说明
在MyBatis映射文件中,动态SQL标签提供了强大的功能来构建灵活的查询语句。其中`<choose>`、`<when>`以及可选的`<otherwise>`用于实现类似于Java中的switch-case逻辑结构[^1]。
#### `<choose>` 标签的作用
该标签允许定义多个条件分支,在这些条件下只有一个会被执行。如果没有任何一个`<when>`测试通过,则会尝试处理`<otherwise>`部分(如果有提供的话)。这有助于创建更加简洁和易读的SQL片段。
#### `<when>` 的作用
每一个`<when>`子元素代表了一个可能的选择路径,并且可以包含任意数量的其他嵌套节点或属性设置。只有当对应的test表达式的布尔值为true时才会被纳入最终生成的SQL字符串之中。
下面是一个具体的例子展示如何利用上述特性:
```xml
<select id="findActiveBlogWithTitleLike" parameterType="map" resultType="Blog">
SELECT * FROM BLOG
WHERE state = 'ACTIVE'
<choose>
<when test="title != null">
AND title like #{title}
</when>
<when test="author != null and author.name != null">
AND author_name like #{author.name}
</when>
<otherwise>
AND featured = 1
</otherwise>
</choose>
</select>
```
在这个示例里,假设传入参数是Map对象,那么将会依据是否存在"title"键或者存在"author.name"这两个情况分别应用不同的过滤条件;如果没有满足任何一个特定条件,则默认采用显示特色文章的方式作为兜底方案。
阅读全文