当前位置:   article > 正文

MyBatis and or使用列表控制or条件_mybayis 多条件or

mybayis 多条件or

背景:最近项目需要,师傅可以查找订单,而师傅是指定可以服务2到3个区域,故需要使用到and, or条件的组合,以下记一下代码。

最重要的代码是:

1、构建List<Consumer<LambdaQueryWrapper<T>>> andConditions;

2、从列表中填好 andConditions使用 and, or;

3、queryWrapper使用and中使用for得到所有的条件。

  1. // 通过staffId查找地域id
  2. LambdaQueryWrapper<ServiceAreaStaff> areaQueryWrapper = new LambdaQueryWrapper<ServiceAreaStaff>().eq(ServiceAreaStaff::getStaffId, staff.getId());
  3. List<ServiceAreaStaff> areasList = serviceAreaStaffMapper.selectList(areaQueryWrapper);
  4. // 找到符合的订单
  5. // 当前师傅只能看到服务范围内的订单数据
  6. List<Consumer<LambdaQueryWrapper<Order>>> andConditions = new ArrayList<>();
  7. List<Long> areas = new ArrayList<Long>();
  8. for(ServiceAreaStaff area : areasList) {
  9. andConditions.add(wq -> wq.or().eq(Order::getServiceAreaId, area.getServiceAreaId()));
  10. }
  11. LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<Order>()
  12. .and(true, wrapper -> {
  13. for (Consumer<LambdaQueryWrapper<Order>> condition : andConditions)
  14. {
  15. condition.accept(wrapper);
  16. }
  17. })
  18. .orderByDesc(Order::getId);
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/158293
推荐阅读
相关标签
  

闽ICP备14008679号