private List<Long> roleIds;mybatis多表联查怎么保存为List<long>形式
时间: 2024-06-16 11:08:18 浏览: 96
MyBatis-Plus多表联合查询并且分页(3表联合)
5星 · 资源好评率100%
在 Mybatis 中,我们可以使用多表联查来查询相关联的数据,并将这些数据保存到 List<Long> 中。具体实现步骤如下:
1. 在 Mapper 接口中定义方法,使用 @Results 和 @Result 注解来定义多表联查的 SQL 语句,例如:
```
@Select("SELECT u.id, r.id as roleId FROM user u LEFT JOIN user_role ur ON u.id = ur.user_id LEFT JOIN role r ON ur.role_id = r.id WHERE u.id = #{userId}")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "roleIds", column = "roleId", javaType = List.class),
})
UserDTO getUserDTO(Long userId);
```
2. 在 UserDTO 类中添加 roleIds 属性和对应的 getter 和 setter 方法,例如:
```
public class UserDTO {
private Long id;
private List<Long> roleIds;
// getter 和 setter 方法
}
```
3. 在 SQL 语句中使用 GROUP_CONCAT 函数将多条记录合并为一条记录,并使用 CONCAT 函数将这些记录用逗号隔开,例如:
```
@Select("SELECT u.id, GROUP_CONCAT(r.id SEPARATOR ',') as roleIds FROM user u LEFT JOIN user_role ur ON u.id = ur.user_id LEFT JOIN role r ON ur.role_id = r.id WHERE u.id = #{userId} GROUP BY u.id")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "roleIds", column = "roleIds", javaType = List.class),
})
UserDTO getUserDTO(Long userId);
```
这样,我们就可以使用 Mybatis 进行多表联查,并将查询结果保存为 List<Long> 形式的数据了。
阅读全文