mybatis中使用case when还可以用resultmap返回吗
时间: 2024-04-16 21:27:19 浏览: 63
MyBatis查询返回Map示例代码
可以使用case when语句来定义resultMap返回的结果。在resultMap的映射规则中,可以使用case when语句来对查询结果进行条件判断和处理,然后返回相应的结果。
例如,假设有一个表格存储了学生成绩信息,包含字段score,我们想要根据成绩的不同范围返回不同的结果,可以使用case when语句和resultMap来实现:
```xml
<resultMap id="scoreResultMap" type="Score">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="score" column="score"/>
<result property="result" column="score" javaType="java.lang.String"
jdbcType="INTEGER"
typeHandler="org.apache.ibatis.type.EnumTypeHandler"
resultMap="scoreResultMap">
<case value="90">
<when test="score == 90">
A
</when>
</case>
<case value="80">
<when test="score >= 80 and score < 90">
B
</when>
</case>
<case value="70">
<when test="score >= 70 and score < 80">
C
</when>
</case>
<case value="60">
<when test="score >= 60 and score < 70">
D
</when>
</case>
<otherwise>
E
</otherwise>
</result>
</resultMap>
```
在上述示例中,我们定义了一个resultMap来映射Score对象,并使用case when语句来判断score的范围,并返回对应的结果。注意,在case标签中,value属性表示对应的范围值,when标签中的test属性用于判断条件,然后返回对应的结果。
这样,在执行查询操作时,MyBatis会根据score字段的值,自动匹配对应的条件,并将结果映射到Score对象的result属性中。
需要注意的是,case when语句只能用于查询时的结果映射,不能用于插入、更新等操作。
阅读全文