当前位置: 首页 > news >正文

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

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

最重要的代码是:

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

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

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

// 通过staffId查找地域id
LambdaQueryWrapper<ServiceAreaStaff> areaQueryWrapper = new LambdaQueryWrapper<ServiceAreaStaff>().eq(ServiceAreaStaff::getStaffId, staff.getId());
List<ServiceAreaStaff> areasList = serviceAreaStaffMapper.selectList(areaQueryWrapper);
// 找到符合的订单// 当前师傅只能看到服务范围内的订单数据
List<Consumer<LambdaQueryWrapper<Order>>> andConditions = new ArrayList<>();List<Long> areas = new ArrayList<Long>();
for(ServiceAreaStaff area : areasList) {andConditions.add(wq -> wq.or().eq(Order::getServiceAreaId, area.getServiceAreaId()));
}LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<Order>().and(true, wrapper -> {for (Consumer<LambdaQueryWrapper<Order>> condition : andConditions) {condition.accept(wrapper);}}).orderByDesc(Order::getId);
http://www.lryc.cn/news/123540.html

相关文章:

  • C语言刷题训练【第11天】
  • 正则表达式的使用
  • PHP 求解两字符串所有公共子序列及最长公共子序列 支持多字节字符串
  • linux内核bitmap之setbit汇编实现
  • Golang设计模式
  • leetcode151. 反转字符串中的单词
  • 【BASH】回顾与知识点梳理(十七)
  • 时序预测-Informer简介
  • 2023牛客第七场补题报告C F L M
  • Android使用kotlin+协程+room数据库的简单应用
  • Kubernetes pod调度约束[亲和性 污点] 生命阶段 排障手段
  • Matlab实现模拟退火算法(附上多个完整源码)
  • 前后端分离------后端创建笔记(03)前后端对接(上)
  • stable diffusion安装包和超火使用文档及提示词,数字人网址
  • 训练营:贪心篇
  • 四、Dubbo扩展点加载机制
  • [保研/考研机试] KY103 2的幂次方 上海交通大学复试上机题 C++实现
  • 时序预测 | MATLAB实现基于BP神经网络的时间序列预测-递归预测未来(多指标评价)
  • 组合模式(C++)
  • git上传问题记录
  • 通过动态IP解决网络数据采集问题
  • 可重入锁,不可重入锁,死锁的多种情况,以及产生的原因,如何解决,synchronized采用的锁策略(渣女圣经)自适应的底层,锁清除,锁粗化,CAS的部分应用
  • JSON.parse()和JSON.stringify()用法
  • Android 并发编程--阻塞队列和线程池
  • Playwright快速上手-1
  • PPT颜色又丑又乱怎么办?
  • python计算相关系数R
  • 黑马项目一阶段面试 自我介绍篇
  • 时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测
  • 开发过程中遇到的问题以及解决方法