数据库的双列批量筛选

1.业务背景

        对于商品长期租赁类型业务,单个商品会存在商品编号和排期的内容,再下单时  会传入对应长期租赁的商品以及下单时所选择对应商品的租赁排期

2.遇到问题       

        在进行筛选时,需要使用批量筛选进行过滤

        原代码是这样的, 将两个字段通过特殊字符拼接起来,将订单数据分段,采用mybatisplus的queryWrapper进行一个in筛选过滤, 该做法会导致索引失效

3.解决方案  

        在筛选时,遍历订单结果集,对结果集进行分段采取or的方式对所有的等值情况进行查询如下

 LambdaUpdateWrapper<ShopGuideSchedule> update = Wrappers.lambdaUpdate();
        for (List<GenerateOrderPointDto> generateOrderPointDtoList : ListUtils.partition(generateOrderPointDTOs, 200)) {
            for (GenerateOrderPointDto generateOrderPointDto : generateOrderPointDtoList) {
                update.or(item -> buildShopScheduleUpdateQueryWrapper(generateOrderPointDto, item));
            }
            result = result + shopGuideScheduleMapper.update(shopGuideSchedule, update);
            update.clear();
        }

 buildShopScheduleUpdateQueryWrapper方法为

private void buildShopScheduleUpdateQueryWrapper(GenerateOrderPointDto generateOrderPointDto, LambdaUpdateWrapper<ShopGuideSchedule> item) {
        item.eq(ShopGuideSchedule::getShopId, generateOrderPointDto.getPointId())
                .eq(ShopGuideSchedule::getShopSchedule, DateUtils.parseDateToStr(DateUtils.YYYY_MM, generateOrderPointDto.getDate()))
                .eq(ShopGuideSchedule::getStatus, ShopPointStatus.IDLE.getStatus());
     
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值