@Override
public IPage<InsProtocolVo> pageList(InsProtocolDto request) {
Page page = getPage(request);
IPage<InsProtocolVo> result = insProtocolMapper.pageList(page, request);
result.getRecords().forEach(insProtocolVo -> {
//拿到协议表的Id
Long id = insProtocolVo.getId();
//用协议表Id通过协议产品中间表获得产品表Id
List<Long> productIdList = insProtocolProductMapper.selectProductIdList(id);
//LambdaQueryWrapper<ProProduct> wrapper = new LambdaQueryWrapper<>();
QueryWrapper<ProProduct> wrapper = new QueryWrapper<>();
//产品表Id不为空且引用不为零作为wapper.in的条件
if(CollectionUtils.isEmpty(productIdList)) return;
//将获得的产品表Id和产品表Id相对应(ProProduct::getId in productIdList)
wrapper.lambda().in(ProProduct::getId,productIdList);
//同时找到产品表中的产品名称
wrapper.lambda().select(ProProduct::getName);
//拿到的所有产品名称
List<ProProduct> proProducts = proProductMapper.selectList(wrapper);
StringBuilder stringBuilder = new StringBuilder();
//将拿到的产品名称进行拼接
proProducts.forEach(t -> stringBuilder.append(t.getName()).append(","));
//当值不为空且长度大于零,删除拼接的最后一个逗号
if (stringBuilder != null && stringBuilder.length() > 0)
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
//将拼接完的产品名称放到协议表的ProductName字段中
insProtocolVo.setProductName(stringBuilder.toString());
});
return result;
}
企业PageList简单的连表查询思路
最新推荐文章于 2024-02-02 14:44:36 发布