mybatis中动态的多个case shen
时间: 2023-07-10 17:16:25 浏览: 92
在 MyBatis 中,可以使用 `<choose>` 标签来实现动态的多个 CASE WHEN 语句。以下是一个示例:
```
<select id="dynamicQuery" resultType="java.util.Map">
SELECT
<foreach item="column" collection="columns" separator=",">
${column} AS ${column},
<choose>
<when test="${column} > #{value}">
'Greater than value'
</when>
<when test="${column} < #{value}">
'Less than value'
</when>
<otherwise>
'Equal to value'
</otherwise>
</choose>
AS ${column}_result
</foreach>
FROM myTable
</select>
```
在这个示例中,我们仍然使用 `<foreach>` 标签来循环遍历列名列表,并将每个列名添加到 SQL 语句中。然后在每个列名后面使用 `<choose>` 标签来实现多个条件分支。在每个 `<when>` 标签中,我们使用 `test` 属性来判断条件是否成立。注意,在这里我们使用 `${column}` 来引用列名,使用 `#{value}` 来引用参数值。在 `<otherwise>` 标签中,我们指定默认的结果值。最后,我们将结果类型设置为 `java.util.Map`,以便可以在代码中动态获取结果列。
这样,我们就可以根据条件动态生成多个 CASE WHEN 语句,而不需要在代码中手动拼接 SQL 语句。
阅读全文