人员信息表user
部门信息表dept
user表中有dept_id外键,关联dept表中的主键dept_id
需求:查询user表中信息时,显示dept表的deptName
操作:
user实体中建立detp实体属性
返回给前台最终的数据如图:
实现类代码:
/**
* 查询人员信息列表
*
* @param wxUser 人员信息
* @return 人员信息
*/
@Override
public List<WxUser> selectWxUserList(WxUser wxUser) {
LambdaQueryWrapper<WxUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.orderByDesc(WxUser::getWxId);
List<WxUser> wxUserList = wxUserMapper.selectList(lambdaQueryWrapper);
return addDeptInfoByList(wxUserList);
}
/**
* 列表加载部门信息
*
* @param wxUserList
* @return
*/
private List<WxUser> addDeptInfoByList(List<WxUser> wxUserList) {
//1.新建部门ID列表
List<Long> keshiIdList = new ArrayList<>();
//2.循环wxUserList,将部门ID添加至上面的ID列表
wxUserList.forEach(wxUser1 -> keshiIdList.add(wxUser1.getKeshiId()));
//3.根据部门ID列表查询部门信息
List<WxKeshi> wxKeshiList = wxKeshiMapper.selectBatchIds(keshiIdList);
//4.将部门信息列表转换成以部门ID为KEY的MAP
Map<Long, WxKeshi> wxKeshiMap = wxKeshiList.stream().collect(Collectors.toMap(WxKeshi::getKeshiId, Function.identity()));
//5.循环wxUseList列表,根据部门ID查询部门信息MAP,将部门实体添加至每个wxUserList实体
wxUserList.forEach(e -> e.setWxKeshi(wxKeshiMap.get(e.getKeshiId())));
return wxUserList;
}