MyBatis-Plus多表分页详解

一、MyBatis-Plus多表分页查询

MyBatis-Plus是一个基于MyBatis框架之上的增强工具,在MyBatis的基础上只做增强不做改变,在向上兼容MyBatis的同时,完美整合Spring框架,通过自定义注入的方式,方便地实现了单表操作和多表之间的复杂联合查询。在使用MyBatis-Plus进行多表分页查询时,可以通过Wrapper对象来创建查询条件,最终通过Page对象实现分页查询。下面是一些使用MyBatis-Plus的示例代码:

    // 多表分页查询示例
    IPage<Map<String,Object>> page = new Page<>(pageNum,pageSize);
    String condition = "xxx"; //查询条件
    page = customMapper.customQueryPage(page,condition);
    // 结果输出
    List<Map<String,Object>> list = page.getRecords();
    long total = page.getTotal();

二、MyBatis-Plus多表分页查询怎么用

MyBatis-Plus的分页查询方式相对于MyBatis的分页查询来说更加的简单和易用,只需要传入IPage对象即可实现分页查询,具体实现参考下面的示例:

    // 分页查询
    IPage<BookVO> resultPage = new Page<>(pageNum,pageSize);
    resultPage = bookMapper.queryBookByPage(resultPage, categoryId);
    // 结果输出
    List<BookVO> resultList = resultPage.getRecords();
    long total = resultPage.getTotal();

三、MyBatis-Plus多表分页传参数过滤

在进行多表联合查询时,经常需要根据外键关联进行查询,如对于某一个订单表需要对用户表进行关联查询。MyBatis-Plus提供了一些参数过滤的方法以及Lambda表达式的支持,使得多表之间的关联查询更方便,如下所示:

    // Lambda查询
    IPage<Map<String,Object>> resultPage = new Page<>(pageNum,pageSize);
    resultPage = testMapper.selectMapsPage(resultPage,
    new QueryWrapper<Test>().lambda()
        .eq(Test::getStatus,1)
        .like(Test::getName,"Jack")
        .inSql(Test::getId,"select tid from tag_test where tid is not null")
    );

四、MyBatis多表分页查询

在使用MyBatis进行多表分页查询时,需要手写SQL语句进行联表查询,再通过MyBatis的RowBounds对象控制分页结果,或者使用MyBatis的插件PageHelper来控制分页结果。相对于MyBatis-Plus的灵活性而言,MyBatis在进行多表联查时需要手写SQL,工作量较大。以下是一个使用MyBatis进行多表分页查询的示例:

    // 多表分页查询示例
    RowBounds bounds = new RowBounds(start,pageSize);
    List<Map<String,Object>> list = sqlSession.selectList("tableName.selectList",paramMap,bounds);
    long total = sqlSession.selectOne("tableName.selectListCount",paramMap);

五、MyBatis-Plus多表联查结果分页

MyBatis-Plus的分页方式同样支持多表联查的结果分页,只需要在创建Wrapper对象时设置多表联查条件,然后再将Wrapper对象作为参数传递给IPage对象即可实现多表联查的结果分页。下面是一个示例代码:

    // 多表联查结果分页示例
    IPage<Map<String,Object>> page = new Page<>(pageNum,pageSize);
    String condition = "xxx"; //查询条件
    QueryWrapper<Map<String,Object>> wrapper = new QueryWrapper<>();
    wrapper.select("table1.id","table1.name","table2.code")
            .inSql("table1.id","select table_id from table_relation where category_id = xxx")
            .orderByDesc("table1.create_time");
    page = customMapper.customQueryPage(page,wrapper);
    // 结果输出
    List<Map<String,Object>> list = page.getRecords();
    long total = page.getTotal();

六、MyBatis-Plus的分页

MyBatis-Plus的分页方式非常简单,只需要创建一个Page对象并传入当前页和每页显示条数,然后将Page对象作为参数传入Mapper方法中即可实现分页查询。以下是一个简单的示例代码:

    // 简单分页示例
    IPage<User> page = new Page<>(pageNum,pageSize);
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    // 查询条件
    wrapper.like("name","tom");
    page = userMapper.selectPage(page,wrapper);
    // 结果输出
    List<User> list = page.getRecords();
    long total = page.getTotal();

七、MyBatisPlus联表分页查询

MyBatisPlus的联表分页查询和普通的多表分页查询类似,只需要创建一个IPage对象,并将查询条件封装在Wrapper对象中,然后作为参数传入Mapper方法中,注意不同的Mapper方法如下所示:

    // 联表分页查询示例
    IPage<Map<String,Object>> page = new Page<>(pageNum,pageSize);
    String condition = "xxx"; //查询条件
    QueryWrapper<Map<String,Object>> wrapper = new QueryWrapper<>();
    wrapper.table("table1 t1")
            .leftJoin("table2 t2 on t1.id = t2.table_id");
    page = customMapper.customQueryPage(page,wrapper);
    // 结果输出
    List<Map<String,Object>> list = page.getRecords();
    long total = page.getTotal();

八、MyBatisPlus分页查询

MyBatisPlus的分页查询是一种在Mapper接口上进行分页查询的方法,在Mapper接口上添加一个默认的分页查询方法即可快速实现分页查询。并且MyBatisPlus提供了IPage对象内置的分页方法,可以更加方便地实现分页查询。以下是一个示例代码:

    // 分页查询示例
    IPage<User> page = new Page<>(pageNum,pageSize);
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    // 查询条件
    wrapper.select("id","name","age")
            .in("age",Arrays.asList(18,20,21))
            .orderByDesc("create_time");
    userMapper.selectPage(page,wrapper);
    // 结果输出
    List<User> list = page.getRecords();
    long total = page.getTotal();

九、MyBatisPlus分表查询

MyBatisPlus的分表查询是一种利用Sharding-Jdbc进行分表查询的方法,可以将普通的Mapper方法进行分表操作,同时也可以进行多表间的关联查询。Sharding-Jdbc是一款轻量级的Java框架,提供了分库分表的功能支持,透明化数据分片,支持分布式事务,可插拔的式架构,可以结合Spring、SpringBoot、MyBatis、JPA等使用。以下是一个示例代码:

    // 分表查询示例
    IPage<Map<String,Object>> page = new Page<>(pageNum,pageSize);
    String condition = "xxx"; //查询条件
    QueryWrapper<Map<String,Object>> wrapper = new QueryWrapper<>();
    wrapper.eq("name","tom").or().like("name","Jack");
    page = customMapper.customQueryPage(page,wrapper);
    // 结果输出
    List<Map<String,Object>> list = page.getRecords();
    long total = page.getTotal();

结论

本篇文章对MyBatis-Plus多表分页查询进行了详细的阐述,包括MyBatis-Plus多表分页查询、MyBatis-Plus多表分页查询怎么用、MyBatis-Plus多表分页传参数过滤、MyBatis多表分页查询、MyBatis-Plus多表联查结果分页、MyBatisPlus的分页、MyBatisPlus联表分页查询以及MyBatisPlus分表查询等方面进行了深入的介绍。希望本篇文章能够对各位开发者有所帮助。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/241827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:44
下一篇 2024-12-12 12:44

相关推荐

  • jQuery Datatable分页中文

    jQuery Datatable是一个非常流行的数据表插件,它可以帮助您快速地在页面上创建搜索、过滤、排序和分页的数据表格。不过,它的默认设置是英文的,今天我们就来探讨如何将jQu…

    编程 2025-04-29
  • 理解Mybatis中的SQL Limit用法

    Mybatis是一种非常流行的ORM框架,提供了SQL映射配置文件,可以使用类似于传统SQL语言的方式编写SQL语句。其中,SQL的Limit语法是一个非常重要的知识点,能够实现分…

    编程 2025-04-29
  • uniapp分页第二次请求用法介绍

    本文将从多个方面对uniapp分页第二次请求进行详细阐述,并给出对应的代码示例。 一、请求参数的构造 在进行分页请求时,需要传递的参数体包含当前页码以及每页显示的数据量。对于第二次…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25

发表回复

登录后才能评论