Mybatis-Plus 实现多表联合查询+分页+查询条件

2023-10-30

Mybatis plus 自己只能完成单表操作,所以如果想要实现多表,需要借助 Mybatis 实现:首先引入mybatis-plus依赖,这里就不演示了

返回结果集封装,传递分页以及查询的参数,主要代码在 Service 中

@RequestMapping("getClazz")
    public ResultJson<UserRole> getClazz(Integer page, Integer limit, String name) {
        return ResultJson.success(
       	 	PageWeb.build(demoService.getClazz(page, limit, name))
        );
  
    }

Service 层代码:搭建的框架没什么好说的,直接看方法:

@Service
public class DemoServiceImpl extends ServiceImpl<DemoMapper, Role> implements DemoService {
    @Resource
    private DemoMapper demoMapper;
// 返回结果集是 IPage 类型的,泛型是想要传递的实体
    @Override
    public IPage<UserRole> getClazz(Integer page, Integer limit, String name) {
    	// 创建 IPage 的实体类,传递 page limit 实现分页
        IPage<UserRole> page1 = new Page<>(page, limit);
        // 调用 Mapper 层方法,把 IPage 的实现类和查询条件传递
        return demoMapper.getClazz(page1, name);
    }
}

Mapper 层方法:

public interface DemoMapper extends BaseMapper<Role> {
	// 返回结果同上是 IPage 对象
    IPage<UserRole> getClazz(IPage<UserRole> page, @Param("name") String name);
}

xml sql 语句

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xxxx.qcby.mapper.DemoMapper">
	<--! 返回结果集合,id 是唯一标识,type 是结果类型-->
    <resultMap id="UserWithRole" type="com.xxxx.qcby.entity.User">
        <id column="id" jdbcType="BIGINT" property="id"/>
        <result column="user_name" jdbcType="VARCHAR" property="userName"/>
        <result column="password" jdbcType="VARCHAR" property="password"/>
        <result column="sex" jdbcType="INTEGER" property="sex"/>
        <--! 实现连表查询 property 是实体对象,id 是传递的参数,select 是查询语句 -->
        <collection property="userRole" column="id" select="listRole"/>
    </resultMap>

    <select id="getClazz" resultMap="UserWithRole">
        select * from t_user
        <where>
            <if test="name != null">
                user_name like concat('%', #{name}, '%')
            </if>
        </where>
    </select>

    <select id="listRole" resultType="String">
        select role_name
        from t_role r left join ref_user_role rur on r.id = rur.role_id
        where rur.user_id = #{userId}
    </select>
</mapper>

在这里插入图片描述
已实现,总结:其实就是使用 Mybatis-Plus 的分页加上 Mybatis 的基础,熟悉使用 Mybatis 即可

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mybatis-Plus 实现多表联合查询+分页+查询条件 的相关文章

随机推荐

  • 概率论基础(3)一维随机变量(离散型和连续型)

    概率论对于学习 NLP 方向的人 重要性不言而喻 于是我打算从概率论基础篇开始复习 也顺便巩固巩固基础 这是基础篇的第三篇知识点总结 基础 下面前两篇的链接地址 概率论基础 1 古典和几何概型及事件运算 概率论基础 2 条件概率 全概率公式
  • 应急响应--windows主机入侵排查思路

    在之前的工作和护网期间 工程师们在实施主机入侵入侵排查工作的时候 常常会面临时间紧 任务急 需要排查的主机数量众多的情况 为了确保实施人员在有限的时间范围内 可以高效且保证质量的前提下完成主机入侵排查工作 结合大佬们的叙述和自己的体会作如下
  • 2023年计算机视觉与模式识别国际会议(CCVPR 2023)

    会议简介 Brief Introduction 2023年计算机视觉与模式识别国际会议 CCVPR 2023 会议时间 2023年9月15日 17日 召开地点 英国 牛津 大会官网 www ccvpr org 计算机视觉技术与模式识别是现代
  • 上海2021年高考成绩排位查询,上海各区2021年一模成绩&排位情况汇总!

    一模重要性不言而喻 完全对标中考 本质上就是在看考生的区内排名 以下是我们收集到2021各区一模考的最新数据 分享出来供大家对比参考 注 以下各区一模信息来源于家长分享 仅供参考 徐汇区 一模均分 语文118 82 数学108 英语98 4
  • 分享一个加载按钮动画

    先看效果 再看代码
  • Mac查看本机IP

    查看某个网络适配器下的本地IP 1 Mac查看本机IP 终端命令 ifconfig en0 或者 ifconfig 2 查看外网IP地址可打开ip138进行查询 3 手机预览页面 手机可以用ip和端口号访问电脑 可用于在线调试本地项目 步骤
  • GDI和GDI+的应用场合思考

    GDI是微软公司的著名的二维图形引擎 GDI 则是微软公司为了提高显示效果而推出的一种新型图形引擎 下面我就我的一些使用经验阐述二者适用的应用场合 GDI基本能满足一般的绘图要求 我觉得GDI最令人诟病的是它画出来的线显示的锯齿实在比较厉害
  • 解决新版Pycharm无法显示动态图片的问题

    1 打开File 选择Settings 2 选择Tools 点击Python Scientific 3 默认是勾选的 去掉勾选即可
  • 液晶面板中的OD

    OD OVER DRIVE 过驱动 作用 提升 液晶响应时间 对于从黑到白和白到黑无补偿作用响应时 原理 液晶分子在电场中所产生的力矩与电场的平方成正比 因此 增加电场可以大幅度增加对液晶分子施加的力矩 从而加速液晶分子的转动 这就是电场加
  • Qt信号层次太多

    一 先说需求 可能是五层 或多层 子对象要发信号给第一层 这样 如果正常写很麻烦 二 解决方案 专门拿 出一个类 做为中转类 中转类为单例 子类 将信号 发给中转类 中转类 再发给写要的类 上代码 中转类 ifndef TRANSMITSI
  • RS232电平、CMOS电平、TTL电平是什么,区别是什么?

    RS232电平 CMOS电平 TTL电平是什么 区别是什么 什么是TTL电平 CMOS电平 RS232电平 它们有什么区别呢 一般说来 CMOS电平比TTL电平有着更高的噪声容限 1 TTL电平标准 输出 L lt 0 8V H gt 2
  • python中二维数组的切片

    对于一维数组或者列表 a 切片的规则是 b a start stop step 对于二维数组类似 当我们对某个维度切片时 把更细分的维度看作整体即可
  • 【Java】 已知一个数组 arr[] = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引,并在控制台输出找到的索引值。

    import java util Scanner public class Test04 public static void main String args 定义一个数组 用静态初始化完成数组元素的初始化 int arr 19 28 3
  • tqdm循环中实时更新进度条的文字(描述)部分

    tqdm是一个显示进度条的工具 可以在使用for循环的时候添加一个tqdm 这样就知道程序的实时进度 tqdm github页面 https github com tqdm tqdm 示例代码 from tqdm import tqdm i
  • 解决Word、Excel启动时提示向程序发送命令出现问题

    还记得突然有一天 打开Excel或者word后 总是提示 向程序发送命令出现问题 那时候很郁闷 不知道什么问题 重启电脑等方法都没用 然后度娘查找 最后才发现是因为按照额外程序导致的 以下详细说说前因后果 以Excel为例 遇到这种问题应该
  • Python中的连续比较运算符(与C语言对比)

    在Python中 连续的比较运算符是允许的 但是在C语言中是编译不会报错 但是不建议这样使用 Python代码 gt gt gt 5 gt 3 lt 4 True gt gt gt 6 gt 3 lt 1 True 在Python中这两行表
  • 常见的js代码调试

    这里主要探讨使用浏览器来调试javascript方法 并且仅对于IE 对于Opera7 Mozilla FireFox Netscape Navigator等浏览器偶在开发过程中用的很少 没有太多经验 在此就不予探讨 工具的安装 在安装of
  • thymeleaf基本语法

    thymeleaf基本语法 Spring Boot整合Thymeleaf 模版 依赖 创建模板文件 定义页面 简单表达式 Thymeleaf 常用语法 定义局部变量 注释 标准注释 析器级注释 取值 拼接 内联表达式 th inline 字
  • 简单理解磁盘结构

    本文首发于 Guanngxu 的个人博客 磁盘到底是怎样工作的 一文理解硬盘结构 数据库系统总会涉及到辅助存储 大多都是磁盘 因为它们能够存储大量需要长期保存的数据 因此我们有必要先了解了解磁盘的相关知识 根据机械原理 存储器的容量越大其速
  • Mybatis-Plus 实现多表联合查询+分页+查询条件

    Mybatis plus 自己只能完成单表操作 所以如果想要实现多表 需要借助 Mybatis 实现 首先引入mybatis plus依赖 这里就不演示了 返回结果集封装 传递分页以及查询的参数 主要代码在 Service 中 Reques