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

mybatisplus的查询,分页查询,自定义多表查询,修改的几种写法

使用mybatisplus的Db类简化写法

  1. 使用静态调用的方式,执行CRUD方法,避免Spring环境下Service循环注入、简洁代码,提升效率
  2. 需要项目中已注入对应实体的BaseMapper
  3. 完整使用方式见官方测试用例:官方测试用例地址
  4. 对于参数为Wrapper的,需要在Wrapper中传入Entity或者EntityClass供寻找对应的Mapper
  5. 不建议在循环中调用,如果是批量保存,建议将数据构造好后使用 Db.saveBatch(数据) 保存

查询,修改简易写法

查询 lambdaQuery

模糊部门的名称为测试部门,并且部门层级不为2级的部门

List<SysOrg> list = Db.lambdaQuery(SysOrg.class).like(SysOrg::getOrgName, "测试部门").ne(SysOrg::getOrgLevel, 2).list();
修改 lambdaUpdate

将部门的状态修改为有效,条件是部门的id为orgId

 Db.lambdaUpdate(SysOrg.class).set(SysOrg::getStatus, SysOrgStatusEnum.VALID.getId()).eq(SysOrg::getId, orgId).update();

如果service实现类继承了mybatisplus的serviceImpl的话,也支持如下写法:
查询:

List<SysOrg> list = lambdaQuery().eq(SysOrg::getOrgName, "测试部门").ne(SysOrg::getOrgLevel, 2).list();

修改:

lambdaUpdate().set(SysOrg::getOrgName, "新的测试部门的名字").set(SysOrg::getOrgNameAbbr, "新的测试部门缩写").eq(SysOrg::getOrgId, orgId).update();

原生单表分页查询

public IPage<SysOrg> getSysOrgPage(SysOrgBo bo, Integer pageNo, Integer pageSize) {Page<SysOrg> page = new Page<>(pageNo, pageSize);page.addOrder(new OrderItem("create_time", false));// 3 查询条件Page<SysOrg> page = lambdaQuery().like(ObjectUtils.isNotBlank(bo.getOrgName()), SysOrg::getOrgName, bo.getOrgName()).in(ObjectUtils.isNotBlank(bo.getOrgId()),  SysOrg::getOrgId, bo.getOrgIds()).eq(ObjectUtils.isNotBlank(bo.getState()), SysOrg::getState, bo.getState()).page(page);
return page;	
// 在查询结果为空时,将记录设置为空列表的操作是多余的。因为Page对象在查询结果为空时,其getRecords()方法本身就应该返回一个空列表// 写法2:IPage<Entity> page = Db.page(new Page<>(1, 1), Entity.class);Assertions.assertEquals(2, page.getTotal());Assertions.assertEquals(Db.list(new Page<Entity>(1, 1), Entity.class).size(),page.getRecords().size());page = Db.page(new Page<>(1, 1), Wrappers.lambdaQuery(Entity.class));Assertions.assertEquals(1, page.getRecords().size());Assertions.assertEquals(Db.list(new Page<Entity>(1, 1), Wrappers.lambdaQuery(Entity.class)).size(),page.getRecords().size());

自定义分页多表查询

通过map构造查询条件
 // service实现类@Overridepublic IPage<SysOrgVo> selectCustomList(SysOrgBo bo) {Page<SysOrgVo> page = new Page<>(bo.getPageNo(), bo.getPageSize());Map<String, Object> map = getQueryParams(bo);Page<SysOrgVo> p = baseMapper.selectCustomList(page, map);if (ObjectUtils.isBlank(p.getRecords())) {p.setRecords(Collections.emptyList());} else {for (SysOrgVo vo : p.getRecords()) {// 后置操作,如补充某个字典值,字典keyvo.setAxx(axx);vo.setBxx(bxx));}}return p;}// 拼凑查询条件private Map<String, Object> getQueryParams(SysOrgBo bo) {// 获取当前登录用户LoginUser loginUser = LoginUserUtil.getLoginUser();if(loginUser ==null){throw new serviceException("获取登录用户信息失败“);}// 2 查询条件Map<String, Object> map = new HashMap<>();map.put("userId", loginUser.getId());map.put("orgId", orgId);map.put("delFlag","1");map.put("orgIds",Arrays.asList(1,2,3))if (ObjectUtils.isNotBlank(bo.getOrgName()) {map.put("orgName", "%" + bo.getOrgName()+ "%");}if (ObjectUtils.isNotBlank(bo.getOrgCode())) {map.put("orgCode", bo.getOrgCode());}return map;}// mapper.javaPage<SysOrgBo> selectCustomList(Page<SysOrgBo> page, @Param("params") Map<String, Object> params);// mapper.xml<select id="selectCustomList" resultType="org.jeecg.modules.sys.vo.SysOrgVo" parameterType="java.util.HashMap">selectsysorgfromsys_org aleft join 字典表1 b on b.org_id = a.idwherea.del_flag = 0and b.del_flag = 0<if test="params.orgCode!= null  and params.orgCode!= ''"> and a.org_code= #{params.orgCode}</if><if test="params.orgName!= null  and params.orgName!= ''"> and a.org_name like #{params.orgName}</if><if test="ids!=null and ids.size>0">and t.ID in<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">#{item}</foreach></if>order by a.create_time desc</select>
通过mybatisplus的queryWrapper构造查询条件
// service实现类
QueryWrapper<SysOrg> qw= new QueryWrapper<>();
qw.eq("t.del_flag", CommonConstant.DEL_FLAG_0);
qw.orderByAsc("t.depart_order");
qw.in("t.org_code", ids.split(SymbolConstant.COMMA));
qw.and(q->q.isNull(true,"t.parent_id").or().eq(true,"t.parent_id",""));List<SysOrgVo> list = departMapper.selectCustomList(qw);// mapper.javaList<SysOrgVo> selectCustomList(@org.apache.ibatis.annotations.Param(Constants.WRAPPER) Wrapper<SysOrg> queryWrapper);// mapper.xmlselect t.*, soeb.XXXfrom sys_org tLEFT JOIN sys_org_ext_business soeb on t.id = soeb.org_id${ew.customSqlSegment}
直接返回查询结果的某个字段
  String name = Db.getObj(Wrappers.lambdaQuery(Entity.class).eq(Entity::getId, 1L), Entity::getName);Assertions.assertEquals("ruben", name);

相关文章:

mybatisplus的查询,分页查询,自定义多表查询,修改的几种写法

使用mybatisplus的Db类简化写法 使用静态调用的方式&#xff0c;执行CRUD方法&#xff0c;避免Spring环境下Service循环注入、简洁代码&#xff0c;提升效率需要项目中已注入对应实体的BaseMapper完整使用方式见官方测试用例&#xff1a;官方测试用例地址对于参数为Wrapper的&…...

括号匹配判断

本题实现求表达式中括号是否匹配。只需判断表达式中括号&#xff08;本题中只会出现三种括号&#xff0c;分别是小括号&#xff0c;中括号和大括号&#xff09;是否匹配&#xff0c;表达式中可以有其他值也可没有。 函数接口定义&#xff1a; int match (char *exp); 其中 …...

数据结构(栈和队列的实现)

1. 栈&#xff08;Stack&#xff09; 1.1 栈的概念与结构 栈是一种特殊的线性表&#xff0c;其只允许固定的一段插入和删除操作&#xff1b;进行数据插入和删除的一段叫做栈顶&#xff0c;另一端叫栈底&#xff1b;栈中的元素符合后进先出LIFO&#xff08;Last In First Out&…...

Python批量处理客户明细表格数据,挖掘更大价值

批量处理 .xls 数据并进行归类分析以挖掘内在价值&#xff0c;通常涉及以下步骤&#xff1a; 读取数据&#xff1a;使用 pandas 库读取 .xls 文件。数据清洗&#xff1a;处理缺失值、异常值、重复值等。数据转换&#xff1a;对数据进行必要的转换&#xff0c;如日期格式统一、…...

NAND Flash虚拟层索引表机制

​​​​​ NAND Flash虚拟层的索引表用于建立逻辑块与数据块、日志块之间的关系,用于NAND Flash虚拟层在运行过程中的读写、擦除操作;由于NAND Flash虚拟层采用集中索引的方式,因此在NAND Flash虚拟层启动时需要在NAND Flash存放索引表区域扫描并确定NAND Flash中存…...

Spring Boot框架:新闻推荐系统开发新趋势

3系统分析 3.1可行性分析 通过对本新闻推荐系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本新闻推荐系统采用JAVA作为开发语言&#xff0c;Spring Boot框…...

RK3568平台(opencv篇)opencv处理图像

一.颜色转换 cv2.cvtColor()函数功能: 将一幅图像从一个色彩空间转换到另一个色彩空间。 函数原型: cv2.cvtColor(src,code,dst=None,dstCn=None) 参数定义: src:要转换的源文件 code,转换的色彩空间,在 opencv 中有超过 150 种颜色空间转换方法,但是经常用的只有 B…...

【移动端】Viewport 视口

1. 什么是 Viewport&#xff08;视口&#xff09;&#xff1f; Viewport&#xff08;视口&#xff09;是指浏览器中用户可见的那部分网页内容的区域&#xff0c;简单来说&#xff0c;它是用户当前看到的网页的“窗口”区域。在不同的设备上&#xff0c;Viewport 的大小会有所不…...

PWM 模式

一、介绍 PWM&#xff08;脉宽调制&#xff0c;Pulse-width modulation&#xff09;是一种通过调节脉冲信号的宽度来控制电能输出的方法。PWM是一种方波信号&#xff0c;通常在电子和电气工程中用于调节功率输送&#xff0c;控制电机速度&#xff0c;调节LED亮度&#xff0c;以…...

模拟算法(3)_Z字形变换

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 模拟算法(3)_Z字形变换 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. 题目链…...

Go语言实现长连接并发框架 - 任务执行流路由模块

文章目录 前言接口结构体接口实现项目地址最后 前言 你好&#xff0c;我是醉墨居士&#xff0c;上篇博客中我们实现了任务执行流上下文部分&#xff0c;接下来我们实现一下任务执行流的路由模块&#xff0c;基于该模块可以实现将消息转发到相应注册的任务执行流中进行处理 接…...

Windows 编译 FFmpeg 源码详细教程

FFmpeg FFmpeg 是一个开源的多媒体框架,它包括了一整套工具和库,可以用来处理(转码、转换、录制、流式传输等)音频和视频。FFmpeg 支持广泛的音视频格式,并且可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。 FFmpeg 的主要组件包括: ffmpeg:这是一个命令行工…...

JavaCV 实现视频链接截取封面工具

引入必要依赖 <!--JavaCV--> <dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.7</version> </dependency> <dependency><groupId>cn.hutool</groupI…...

初识Linux · 进程替换

目录 前言&#xff1a; 1 直接看代码和现象 2 解释原理 3 将代码改成多进程版本 4 认识所有函数并使用 前言&#xff1a; 由前面的章节学习&#xff0c;我们已经了解了进程状态&#xff0c;进程终止以及进程等待&#xff0c;今天&#xff0c;我们学习进程替换。进程替换我…...

项目-坦克大战学习-人机ai

我们要知道&#xff0c;人机的移动和玩家的移动方式是一样的&#xff0c;所以我们可以将玩家移动代码以及检测碰撞代码移过来&#xff0c;唯一不同的就是人机检测到碰撞后会改变方向继续移动而不是停止 所以我们需要一个随机数使人机检测到碰撞后随机修改方向 Random rd new …...

YOLOv11改进 | Conv篇 | YOLOv11引入SKConv

1. SKConv介绍 1.1 摘要:在标准卷积神经网络(CNN)中,每层中阿尔蒂神经元的感受野被设计为共享相同的大小。在神经科学界众所周知,视觉皮层神经元的感受野大小受到刺激的调制,这在构建CNN时很少考虑。我们在CNN中提出了一种动态选择机制,允许每个神经元根据输入信息的多…...

招联2025校招内推

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…...

美容院管理创新:SpringBoot系统设计与开发

摘 要 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;因此传统管理方式就不适合。为了让美容院信息的管理模式进行升级&#xff0c;也为了更好的维护美容院信息&#xff0c;美容院管理系统的开发运用就显得很有必要。并且通过开发…...

文心一言 VS 讯飞星火 VS chatgpt (361)-- 算法导论24.3 3题

三、假定将 Dijkstra 算法的第4行改为&#xff1a; 4 while |Q|>1 这种改变将让 while 循环的执行次数从 ∣ V ∣ |V| ∣V∣ 次降低到 ∣ V ∣ − 1 |V|-1 ∣V∣−1 次。这样修改后的算法正确吗? 如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 将 Dijkst…...

ArkTS 开发中,有两种网络请求

在鸿蒙开发中&#xff0c;ArkTS&#xff08;Ark TypeScript&#xff09;是用于构建鸿蒙应用的一种开发语言&#xff0c;它基于TypeScript&#xff0c;并提供了丰富的API和工具集来简化开发过程。其中&#xff0c;网络请求是开发应用时经常需要用到的一个功能。 ArkTS 网络请求…...

52DH Pro网址导航系统开源版

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 这款导航系统是基于 SiteHub 二次开发的网址导航系统&#xff0c;拥有独立前台和拟态风格的后台管理中心。我爱导航系统 (52DH Pro 网址导航系统) 集合网上优质网站网址导航&#xff0c;…...

OpCore-Simplify:10分钟搞定黑苹果配置,告别3天手动调试的智能神器

OpCore-Simplify&#xff1a;10分钟搞定黑苹果配置&#xff0c;告别3天手动调试的智能神器 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂…...

Sunshine游戏串流终极指南:5大优化策略实现300%性能提升

Sunshine游戏串流终极指南&#xff1a;5大优化策略实现300%性能提升 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine作为一款开源自托管的游戏串流服务器&#xff0c;为Mo…...

ElevenLabs海南话语音部署避坑清单(含IPA音标对齐表+海口话声调模板),限免领取仅剩200份

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs海南话语音部署避坑清单&#xff08;含IPA音标对齐表海口话声调模板&#xff09;&#xff0c;限免领取仅剩200份 部署ElevenLabs模型支持海口话&#xff08;海南闽语&#xff09;语音合成时&…...

如何免费解决BT下载速度慢问题?终极trackerslist配置指南

如何免费解决BT下载速度慢问题&#xff1f;终极trackerslist配置指南 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist 你是否曾为BT下载的龟速而烦恼&#xff1f;种子明明显…...

告别IBus!在Ubuntu 22.04上为Fcitx5安装搜狗输入法并设置自启动的完整流程

在Ubuntu 22.04上深度配置Fcitx5与搜狗输入法的现代输入方案 对于追求高效输入的Linux用户而言&#xff0c;输入法框架的选择往往决定了日常使用的流畅度体验。传统IBus框架虽然预装在大多数发行版中&#xff0c;但在中文输入场景下常显力不从心——词库更新滞后、云输入支持有…...

别再让治具压坏你的板子!手把手教你用TSK-64应力测试仪搞定ICT/FCT应力管控

从应力失控到精准管控&#xff1a;TSK-64测试仪在ICT/FCT产线的实战指南 当产线突然出现批量PCBA功能异常时&#xff0c;多数工程师的第一反应是检查焊接质量或元器件性能&#xff0c;却往往忽略了治具施加的机械应力这个"隐形杀手"。某汽车电子制造商曾因FCT治具压力…...

你的Nmap脚本库该更新了!手把手教你管理、调试与编写自定义NSE脚本

从使用者到创造者&#xff1a;Nmap脚本引擎(NSE)深度管理指南 在渗透测试和安全评估领域&#xff0c;Nmap早已超越了简单的端口扫描工具定位&#xff0c;其强大的脚本引擎(NSE)使其成为网络安全专业人员的瑞士军刀。但大多数用户仅停留在基础脚本调用层面&#xff0c;未能充分释…...

如何3步搭建你的私人游戏云:Sunshine游戏串流服务器终极指南

如何3步搭建你的私人游戏云&#xff1a;Sunshine游戏串流服务器终极指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器&#xff0c;专…...

Circuit实战教程:10分钟构建你的第一个Compose应用

Circuit实战教程&#xff1a;10分钟构建你的第一个Compose应用 【免费下载链接】circuit ⚡️ A Compose-driven architecture for Kotlin and Android applications. 项目地址: https://gitcode.com/gh_mirrors/cir/circuit Circuit是一个基于Compose驱动的Kotlin和And…...