企业PageList简单的连表查询思路

 @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;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值