mybatis GROUP_CONCAT 得出的数值以List接收
时间: 2023-06-18 14:06:03 浏览: 1723
在 MyBatis 中,可以使用 GROUP_CONCAT 函数将一列中的多个值合并成一个字符串。如果你需要将 GROUP_CONCAT 的结果以 List 的形式接收,可以使用 MyBatis 自带的 TypeHandler 或自定义 TypeHandler。
以下是一个使用 MyBatis 自带的 TypeHandler 的例子:
1. 首先,定义一个实体类,假设叫做 `User`,其中有一个属性是 `roles`,表示用户的角色列表:
```java
public class User {
private Long id;
private String name;
private List<String> roles;
// getters and setters
}
```
2. 然后,在 MyBatis 的映射文件中,使用 GROUP_CONCAT 函数将用户的角色列表合并成一个字符串,并使用 MyBatis 自带的 `StringTypeHandler` 将其转换成 String 类型:
```xml
<select id="getUser" resultType="User">
SELECT id, name, GROUP_CONCAT(role) as roles
FROM user_role
WHERE id = #{id}
</select>
```
3. 最后,在 User 类中定义一个 setter 方法,将字符串类型的 roles 转换成 List<String> 类型,使用 MyBatis 自带的 `ArrayTypeHandler`:
```java
public void setRoles(String roles) {
this.roles = Arrays.asList(roles.split(","));
}
```
这样,当你执行 `getUser` 查询时,MyBatis 会自动将 GROUP_CONCAT 的结果转换成 List<String> 类型的 roles 属性。
阅读全文