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

springboot mybatis plus 固定查询条件及可选查询条件的组合查询,使用QueryWrapper.and()来解决。

1、我们在写查询SQL的时候,经常会碰到,比如,同一个类别下的某一个编号的物料信息,或者是同一批次的物料库存问题等等。

所属类别fid物料编号bm物料批次pc
110.01.0220240807
110.01.0320240807        
210.02.0120240805

2、那么我们要查询fid=1下面的可选条件bm=10.01.02或者pc=20240807的

那么我们的where fid=1 and (bm='10.01.02' or pc='20240807')

3、有二种方法实现,一种是直接sql,然后判断去处理就行,另一种是用QueryWrapper来直接写,这里我们用QueryWrapper实现:

QueryWrapper<Materials> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(materials.getFid() != null, "fid", materials.getFid());

上面是固定的条件,那么可选条件的:

queryWrapper.and(query -> query.like(materials.getBm()!=null, "bm", materials.getBm()).or().like(materials.getPc()!=null, "pc", materials.getPc()));

4、通过上面的编写,我们就可以实现where fid=1 and (bm='10.01.02' or pc='20240807')的效果,也就是queryWrapper.and()来编写就可以了,这个会在在where + and (多个条件)。

5、然后实际开发中,并不是这么简单,会有这种情况,有多个条件,而且查询条件有些复杂的情况,比如下面的图中的实现:

那么在后端的代码编写,就不可以直接通过字段来一个一个的判断加入了。

6、对于动态的字段,及取值的情况我们可以这么写:

queryWrapper.and((wrapper) -> {dynamicConditions.entrySet().stream().forEach((entry) -> {wrapper.or().like(entry.getKey(), entry.getValue());});});

说明:dynamicConditions:这个是HashMap<String,Object>;

这样,我们就可以动态的处理,而且是成功实现了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Flink的DataStream状态管理
  • 同城信息发布聚合小程序覆盖业态
  • 大数据机器学习算法岗位分析推荐:基于Python的招聘大数据爬虫可视化分析推荐系统
  • 在Docker容器中运行Java应用程序的性能优化技巧
  • Flink-DataWorks第二部分:数据集成(第58天)
  • 创意指南丨VR游览沉浸式空间体验
  • 排序算法——简单选择排序
  • 59 VXLAN+OSPF+l2vpn
  • QT多语言工具实现支持生成ts文件,ts文件和xlsx文件互转
  • 数据库规范化设计 5大基本原则
  • haproxy基础
  • Haproxy实现https
  • 使用Python解析pdf、docx等格式文件。
  • Google安装JSON-handle扩展
  • 以数字孪生技术推动网络资源管理升级
  • 自己简单写的 事件订阅机制
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • gops —— Go 程序诊断分析工具
  • Java Agent 学习笔记
  • javascript 总结(常用工具类的封装)
  • Javascript编码规范
  • JavaScript服务器推送技术之 WebSocket
  • mongodb--安装和初步使用教程
  • Next.js之基础概念(二)
  • Nodejs和JavaWeb协助开发
  • Octave 入门
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Service Worker
  • vue的全局变量和全局拦截请求器
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 创建一个Struts2项目maven 方式
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 优秀架构师必须掌握的架构思维
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • $nextTick的使用场景介绍
  • (C#)获取字符编码的类
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (函数)颠倒字符串顺序(C语言)
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (算法)区间调度问题
  • (一)基于IDEA的JAVA基础10
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)详解PHP处理密码的几种方式
  • (转)用.Net的File控件上传文件的解决方案
  • (转载)深入super,看Python如何解决钻石继承难题
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core WebAPI中封装Swagger配置
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net core使用ef 6