mybatis LambdaQueryWrapper之复杂与或非sql逻辑编写

LambdaQueryWrapper可自动生成sql表达式,对于复杂情况,可参考以下写法:

java 复制代码
queryWrapper.and(true,wrapper->{
	wrapper.eq(true, EmployeeCheckPO::getCid, employeeCheckPO.getCid());
	wrapper.eq(StrUtil.isNotBlank(employeeCheckPO.getCheckMonth()), EmployeeCheckPO::getCheckMonth, employeeCheckPO.getCheckMonth());
	wrapper.like(StringUtils.isNotBlank(employeeCheckPO.getUsername()), EmployeeCheckPO::getUsername, employeeCheckPO.getUsername());
});
queryWrapper.and(true,wrapperNew->{
	wrapperNew.and(true,queryWrapper1->{
		queryWrapper1.eq(EmployeeCheckPO::getDelFlag, DelFlagEnum.N.getValue());
		queryWrapper1.eq(Objects.nonNull(employeeCheckPO.getCid()), EmployeeCheckPO::getCid, employeeCheckPO.getCid());
		queryWrapper1.eq(EmployeeCheckPO::getStatus,0);
		queryWrapper1.eq(EmployeeCheckPO::getUserId,employeeCheckPO.getUserId());
	})
			.or(true,queryWrapper2->{
				queryWrapper2.eq(EmployeeCheckPO::getDelFlag, DelFlagEnum.N.getValue());
				queryWrapper2.eq(Objects.nonNull(employeeCheckPO.getCid()), EmployeeCheckPO::getCid, employeeCheckPO.getCid());
				queryWrapper2.eq(EmployeeCheckPO::getStatus,1);
				queryWrapper2.eq(EmployeeCheckPO::getProcessSupervisorId,employeeCheckPO.getUserId());
			}).or(true,queryWrapper3->{
		queryWrapper3.eq(EmployeeCheckPO::getDelFlag, DelFlagEnum.N.getValue());
		queryWrapper3.eq(Objects.nonNull(employeeCheckPO.getCid()), EmployeeCheckPO::getCid, employeeCheckPO.getCid());
		queryWrapper3.eq(EmployeeCheckPO::getStatus,1);
		queryWrapper3.isNull(EmployeeCheckPO::getProcessSupervisorId);
		queryWrapper3.eq(EmployeeCheckPO::getProcessLeaderId,employeeCheckPO.getUserId());
	});
});
queryWrapper.orderByDesc(EmployeeCheckPO::getCheckMonth);
复制代码
上述sql逻辑解读为:wrapper集合 && (wrapperNew);
其中wrapperNew包括queryWrapper1 || queryWrapper2 || queryWrapper3
相关推荐
雨中飘荡的记忆2 分钟前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
阿里云大数据AI技术1 小时前
用 SQL 调大模型?Hologres + 百炼,让数据开发直接“对话”AI
sql·llm
心之语歌2 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊4 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang4 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang5 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解5 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing9 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean10 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven9711 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java