MPJLambdaWrapperX leftJoin 用法

MPJLambdaWrapperX 是 Mybatis-Plus 的一个扩展类,用于构造更复杂的数据表关联查询条件。它主要用于实现 SQL 的 JOIN 操作,如 LEFT JOIN、RIGHT JOIN 等。下面重点介绍如何使用 MPJLambdaWrapperX 来完成 LEFT JOIN 操作。

基本用法

首先确保你的项目中已经引入了 Mybatis-Plus 相关依赖,并且是支持 mp-jdbc-wrapper 版本的(这是一个对 Mybatis-Plus 的扩展库,专门用于增强JOIN操作能力)。

添加依赖

Maven 项目的 pom.xml 中添加如下依赖:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>${mybatis-plus.version}</version>
</dependency>

确保版本号与你的 Mybatis-Plus 版本相匹配。

示例代码

假设我们有两个实体类 UserDepartment,它们之间是一对多的关系,现在我们要通过用户的ID左连接部门表获取用户及其所属部门信息。

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension_conditions.query.MPJLambdaWrapper;
import org.springframework.stereotype.Service;@Service
public class UserService extends ServiceImpl<UserMapper, User> {public Page<UserVo> selectUsersWithDepartment(Page<UserVo> page) {// 创建 MPJLambdaWrapperX 实例,指定主表为 UserMPJLambdaWrapperX<UserVo> wrapper = new MPJLambdaWrapperX<>(UserVo.class)// 设置 LEFT JOIN 部门表 Department,基于 user.departmentId = department.id.leftJoin(Department.class, Department::getId, User::getDepartmentId)// 选择需要的字段,注意这里的字段名应对应到 UserVo 中的属性名.select(User::getId, User::getName, Department::getDeptName)// 可以添加更多条件,比如按用户名模糊查询.like(User::getName, "searchKeyword");// 执行分页查询return baseMapper.selectJoinPage(page, wrapper);}
}

注意事项

  1. 实体映射:确保你的实体类正确映射了数据库表结构,并且有正确的关联关系定义。
  2. 结果集映射:上述示例中使用的 UserVo 应该是一个视图对象(DTO),用于接收和展示从多个表JOIN查询的结果。你需要根据实际需求定义这个VO类,确保属性名称与查询结果中的列名相匹配。
  3. 方法调用baseMapper.selectJoinPage() 方法是执行 JOIN 查询并支持分页的,第一个参数是分页对象,第二个参数是构建好的 MPJLambdaWrapperX 对象。
  4. 版本兼容性:确保使用的 Mybatis-Plus 版本与 mp-jdbc-wrapper 扩展库版本兼容,避免因版本不匹配导致的问题。

通过上述步骤,你可以灵活地利用 MPJLambdaWrapperX 完成复杂的 LEFT JOIN 查询操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/17062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python打印exception信息

一直以为掌握以下内容就够了。 try:#正常执行语句pass except:#如果正常执行语句不对&#xff0c;执行替代语句pass finally:不论正常执行语句执行如何&#xff0c;最后都会执行.finally这部分可以省略pass因为我try部分写的业务逻辑复杂&#xff0c;配置了多少活动&#xff0…

Apache Flink CDC 3.1.0版本知识学习

Apache Flink CDC 3.1.0版本知识学习 一、Flink CDC 3.1 快速预览二、Transformation 支持三、分库分表合并支持四、使用 Kafka Pipeline Sink 高效写入 Canal/Debezium 格式数据五、更高效地实时入湖 Paimon六、其他改进七、Flink CDC 3.1 版本兼容性 一、Flink CDC 3.1 快速预…

代码随想录算法训练营第四十一天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

代码随想录算法训练营第四十一天 509. 斐波那契数 题目链接&#xff1a;509. 斐波那契数 动规五部曲&#xff1a; 确定dp数组以及下标的含义&#xff1a;第i个数的斐波那契数值是dp[i]确定递推公式&#xff1a;dp[i] dp[i - 1] dp[i - 2];dp数组如何初始化&#xff1a;dp[…

汽车电子专栏目录一览

最近开始整理汽车电子专栏的目录。 方便找到想要的内容&#xff0c;与大家一起学习。 目录 一、 AUTOSAR规范与ECU软件开发篇幅目录 二、 CDD复杂驱动讲解篇幅目录 三、ETAS的运用 四、自动驾驶芯片驾驶芯片 五、三电技术 六、S32KXXMCU&#xff08;NXP汽车常用芯片&…

phpmyadmin漏洞汇总

phpmyadmin是一个非常常用的框架&#xff0c;所以学习它的常见漏洞是非常必要的。 参考大佬的文章进行自学&#xff1a;最全phpmyadmin漏洞汇总_phpmyadmin弱口令-CSDN博客 目录 phpmyadmin简介 查看phpmyadmin版本 漏洞及利用 万能密码登入 影响版本 漏洞POC 远程代码…

【MySQL精通之路】数据类型

目录 1.数字数据类型 1.1 数字数据类型语法 1.2 整数类型&#xff08;精确值&#xff09;-Integer、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT 1.3 定点类型&#xff08;精确值&#xff09;-DECIMAL&#xff0c;NUMERIC 1.4 浮点类型&#xff08;近似值&#xff09;-FLOA…

【传知代码】无监督动画中关节动画的运动表示(论文复现)

前言&#xff1a;在数字动画的广袤领域中&#xff0c;关节动画以其真实、流畅的运动表现&#xff0c;一直占据着举足轻重的地位。无论是电影中的震撼特效&#xff0c;还是游戏世界的角色互动&#xff0c;关节动画都以其细腻的运动表现&#xff0c;赋予虚拟世界以生动与活力。然…

Excel某列中有不连续的数据,怎么提取数据到新的列?

这里演示使用高级筛选的例子&#xff1a; 1.设置筛选条件 在D2单元格输入公式&#xff1a;COUNTA(A4)>0 这里有两个注意事项&#xff1a; *. 公式是设置在D2单元格&#xff0c;D1单元格保持为空&#xff0c; **. 为什么公式中选A4单元格&#xff0c;A列的第一个数据在A3…

CPU数据传送控制方式

引入 为了实现CPU与I/O设备信息交换的同步 无条件传送 示例1&#xff1a; 示例2&#xff1a; 程序查询方式 引入 工作过程 单个外设 多个外设 特点 中断传送方式 工作过程 特点 DMA 概述 DMAC功能 总线请求信号HOLD 总线请求响应信号HOLDA 工作过程 小结

代码随想录算法训练营第五十九天

想想其实坚持下来也不是很难&#xff0c;不过有很多题做一遍应该是记忆没那么深&#xff0c;anyway&#xff0c;要继续往换工作的方向走啊。加油&#xff01;&#xff01; 503.下一个更大元素II 想对了地方&#xff0c;但是没有坚持&#xff0c;应该搞两遍&#xff0c;就把所有…

景源畅信:新手做抖音运营难不难?

在这个信息爆炸的时代&#xff0c;社交媒体平台如抖音已经成为了人们日常生活中不可或缺的一部分。随着抖音的兴起&#xff0c;越来越多的人开始尝试进入这个领域&#xff0c;希望通过抖音运营实现自己的价值。然而&#xff0c;对于新手来说&#xff0c;抖音运营是否真的容易呢…

海光DCU编译安装Cupy

现在国产GPU比较重视AI&#xff0c;大都对Pytorch和TensorFlow做了移植。但是像Numpy&#xff0c;cupy这些科学计算库也非常重要&#xff0c;数据分析和处理也是一个非常大的需求。 Cupy对AMD的Rocm的支持目前还是实验性的&#xff0c;只支持4.3和5.0两个版本。海光DCU与 Rocm…

文心智能体大赛:情深智导

情深智导 概述限制澄清个性化 预览体验 概述 情深向导&#xff0c;致力于为您和您的孩子提供科学、个性化的情感支持与指导。无论您在家庭教育上遇到什么困惑&#xff0c;或是想了解孩子的内心世界&#xff0c;我都会在您身边&#xff0c;与您共同探索&#xff0c;助力亲子关系…

keepalived交叉编译

前言 Keepalived可以实现对服务器的健康检查&#xff0c;当主服务器出现故障时&#xff0c;自动将服务切换到备份服务器上&#xff0c;确保服务的连续性&#xff0c;避免单点故障。它还可以管理一个虚拟 IP 地址&#xff0c;在主备服务器之间进行灵活切换&#xff0c;对外提供…

使用 Python 编程语言进行供应链分析

前言 要分析一家公司的供应链&#xff0c;我们需要供应链不同阶段的数据&#xff0c;如有关采购、制造、运输、库存管理、销售和客户人口统计的数据。我为这项任务找到了一个理想的数据集&#xff0c;其中包括一家时尚和美容初创公司的供应链数据。 1. 相关数据集 让我们导入…

【C++风云录】进化计算框架全览:遗传算法与优化

打开进化计算世界的大门&#xff1a;从多维度了解进化计算框架与库 前言 在复杂的计算领域&#xff0c;进化计算框架和算法库扮演着至关重要的角色。本文将探讨和比较六种不同的进化计算框架和库&#xff0c;包括EO、Pagmo、Shark、ParadisEO、GALib及Open BEAGLE。 欢迎订阅…

打造坦克游戏:类方法的深入解析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;坦克游戏与类方法的结合 二、坦克类的属性与方法概述 1. 属性定义与初…

Modbus协议基础

文章目录 Modbus概述Modbus TCP/IP Modbus概述 Modbus是由Modicon&#xff08;现为施耐德电气公司的一个品牌&#xff09;在1979年发明的&#xff0c;是全球第一个真正用于工业现场的应用层总线协议。 为更好地普及和推动Modbus在基于以太网上的分布式应用&#xff0c;目前施…

如何学习一个新技能

1. 提出想法 2.找到学习方法&#xff0c;学习路径 3.开始学 参考视频&#xff1a;如何成为超速学习者&#xff1f;快速学会任何新技能&#xff01;_哔哩哔哩_bilibili

架构每日一学 12:架构师创造价值必备的四项能力

架构活动就是为了一个架构目标而采取的行动。一个架构活动&#xff0c;可能有成百上千的人参与协同&#xff0c;那么在这个工作过程中&#xff0c;架构师要能够明确自己的定位&#xff0c;哪些事情是自己应该做的&#xff0c;哪些事情不该做。 在这个过程中&#xff0c;架构主…