mybatis的case when
时间: 2023-10-20 07:36:37 浏览: 68
MyBatis不直接支持CASE WHEN语句,但可以通过使用动态SQL来实现类似的功能。下面是一个示例,展示了如何在MyBatis中使用动态SQL实现CASE WHEN:
```xml
<select id="getUsers" resultType="User">
SELECT id, name, age,
<choose>
<when test="sortOrder == 'asc'">
<if test="sortColumn == 'name'">
<![CDATA[ORDER BY name ASC]]>
</if>
<if test="sortColumn == 'age'">
<![CDATA[ORDER BY age ASC]]>
</if>
</when>
<when test="sortOrder == 'desc'">
<if test="sortColumn == 'name'">
<![CDATA[ORDER BY name DESC]]>
</if>
<if test="sortColumn == 'age'">
<![CDATA[ORDER BY age DESC]]>
</if>
</when>
<otherwise>
ORDER BY id
</otherwise>
</choose>
FROM users
</select>
```
在上述示例中,我们使用了`<choose>`元素来实现类似CASE WHEN的逻辑。根据不同的条件,我们使用`<when>`元素来构建不同的SQL语句。在示例中,我们根据`sortOrder`和`sortColumn`的值来确定排序方式和排序列名。
请注意,上述示例只是一种实现方式,你可以根据自己的需求进行修改和扩展。希望能对你有所帮助!