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

news/2025/1/12 13:23:53/

背景:最近项目需要,师傅可以查找订单,而师傅是指定可以服务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.ppmy.cn/news/1028156.html

相关文章

华为OD真题--完美走位--带答案

2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09;or2023年华为OD真题机考题库大全-带答案&#xff08;持续更新&#xff09; 题目描述 输入一个长度为4的倍数的字符串Q,字符串中仅包含WASD四个字母。 将这个字符串中的连续子串…

selenium官网文档阅读总结(day 4)

1.selenium的工作原理 selenium的工作原理涉及以下主要组件和步骤&#xff1a; &#xff08;1&#xff09;WebDriver:这是selenium的核心组件&#xff0c;它是一个用于控制浏览器的API。WebDriver提供了许多方法&#xff0c;用于在浏览器中模拟用户操作。不同的浏览器需要相应…

CCLINK转MODBUS-TCP网关cclink通讯接线图 终端电阻

大家好&#xff0c;今天我们要聊的是生产管理系统中的CCLINK和MODBUS-TCP协议&#xff0c;它们的不同使得数据互通比较困难&#xff0c;但捷米JM-CCLK-TCP网关的出现改变了这一切。 1捷米JM-CCLK-TCP是一款自主研发的CCLINK从站功能的通讯网关&#xff0c;它的主要功能是将各种…

9月30日生效:微软官方服务协议更新,防止人工智能进行逆向工程

微软最近更新了其官方服务协议&#xff0c;新规则将于9月30日生效&#xff0c;包括多个新增和变化&#xff0c;具体细节请参考最新的微软服务协议。 微软最新更新涉及使用Bing Chat聊天机器人、Windows Copilot和Microsoft 365 Copilot服务&#xff0c;引起了广泛关注。这次更新…

自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅲ]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 对话令牌缓冲存储器ConversationTokenBufferMemory ConversationTokenBufferMemory在内存中保留了最近的一些对话交互&#xff0c;并使用标记长度来确定何时刷新交互&#xff0c;而不是交互数量。 from langchain.me…

【JAVA】多态、内部类

1 多态 多态&#xff1a;同类型的对象&#xff0c;执行同一个行为&#xff0c;会表现出不同的行为特征 优势 右边对象可以实现随意更改&#xff0c;更改后续业务只需改右边对象&#xff0c;其它代码无需更改&#xff0c;便于扩展和维护定义方法时&#xff0c;使用父类型作为参…

【数学建模】--时间序列分析

时间序列分析概念与时间序列分解模型 定义&#xff1a;时间序列也称动态序列&#xff0c;是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分&#xff0c;分别是描述过去&#xff0c;分线规律和预测未来&#xff0c;本讲将主要介绍时间序…

PO、VO、DAO、BO、DTO和POJO详解与区别

简介 PO、VO、DAO、BO、DTO和POJO等术语被广泛应用于Java和其他编程语言中。 尽管这些术语是非常常见的&#xff0c;但是很多程序员依然无法清楚地理解它们之间的区别和关系。本文将深入探讨这些术语的含义和用途&#xff0c;帮助程序员更好地理解它们之间的差异和联系…