Mybatis-Plus或PageHelper多表分页查询总条数不对问题的解决方法

针对"Mybatis-Plus或PageHelper多表分页查询总条数不对问题的解决方法",以下是完整攻略。

问题描述

在使用Mybatis-Plus或PageHelper进行多表分页查询时,有时会出现总条数不对的问题。具体表现为分页查询只返回了部分数据或者分页信息不正确。

解决方法

方法一:使用MyBatis-Plus提供的Wrapper进行多表关联查询

MyBatis-Plus提供了一个Wrapper类,可以用于构建复杂的SQL语句,例如多表关联查询。使用这种方式可以在sql语句中手动编写“count(*)”语句,确保分页查询的总条数是正确的。

以下是示例代码:

// 指定要查询的列
QueryWrapper<User> wrapper = new QueryWrapper<User>()
    .select("user.*, department.department_name")
    .eq("user.status", 1)
    .eq("department.status", 1)
    .eq("department.id", 1);
// 分页信息
Page<User> page = new Page<>(1, 10);
// 执行查询
List<User> userList = userMapper.getUserList(page, wrapper);
// 获取总条数
long totalCount = page.getTotal();

在这个示例中,使用了QueryWrapper进行多表关联查询,并通过手动指定查询的列和“count(*)”语句来确保分页查询的总条数是正确的。

方法二:使用PageHelper的count属性

PageHelper提供了一个count属性,可以在查询前执行一个count语句来获取总条数。但是,在多表关联查询中,这种方式有时会出现总条数不正确的问题,解决方法是手动编写“count(*)”语句。

以下是示例代码:

// 分页信息
PageHelper.startPage(1, 10);
// 执行查询
List<User> userList = userMapper.getUserList();
// 获取总条数
long totalCount = PageHelper.count(() -> userMapper.getCount());

在这个示例中,使用了PageHelper的startPage方法进行分页查询,并通过手动编写“count(*)”语句来确保分页查询的总条数是正确的。

总结

以上就是解决“Mybatis-Plus或PageHelper多表分页查询总条数不对问题的解决方法”的攻略。在使用这两个工具时,需要注意分页查询的总条数是否正确,使用方法一和方法二中的任意一种即可解决这个问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis-Plus或PageHelper多表分页查询总条数不对问题的解决方法 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 基于redis key占用内存量分析

    下面我将详细讲解“基于 Redis Key 占用内存量分析”的完整攻略,分为以下几个步骤: 第一步:查看数据类型及大小 Redis 中的数据类型包括字符串、哈希、列表、集合和有序集合。不同类型的数据所占用的内存大小也是不同的。因此,我们首先需要查看 Redis 中各种数据类型的大小,然后才能分析各个 key 的内存占用情况。 字符串类型 字符串类型的数据一般…

    database 2023年5月22日
    00
  • redis 性能监控和排查

    redis出现瓶颈的问题,现在把排查的一些经验记录下来备查,本篇只是思路的整理,不涉及具体的使用。    大体的思路如下:   1.通过slow log查看      参考 http://www.cnblogs.com/onmyway20xx/p/5486604.html   查看下是否有较为明显的慢查询?一般认为出现慢查询的话,redis性能瓶颈已经比较明…

    Redis 2023年4月11日
    00
  • Redis 存储中文方式

    有时,特殊的一些业务需求,我们会为了方便的情况下,使用中文作为key,正常情况下 ,取数据不会有问题,但是难免会有的时候由于编码格式不一样,而导致取不到数据,这个时候,就需要我们对存储的key做一个特殊的处理。这里我选择使用base64编码处理这种情况。 <!– https://mvnrepository.com/artifact/commons-c…

    Redis 2023年4月11日
    00
  • MongoDB和Amazon DocumentDB的区别

    MongoDB和Amazon DocumentDB都是非关系型数据库,在某些方面具有相似性,但它们也有明显的差异。下面我们将详细讲解MongoDB和Amazon DocumentDB的区别。 MongoDB和Amazon DocumentDB的基本概念 MongoDB MongoDB是一个开源的、基于文档的数据库管理系统。它支持JSON格式的数据,具有性能高…

    database 2023年3月27日
    00
  • MySQL中时间函数操作大全

    MySQL中时间函数操作大全 MySQL中提供了丰富的时间函数,可以对日期和时间进行各种常见的操作,比如取得日期中的年、月、日,计算日期之间的差值,将时间戳转换为时间字符串等。下面就一一列举这些时间函数及其用法,方便大家在实际开发中快速使用。 YEAR(date) 函数返回日期date的年份部分。 示例: SELECT YEAR(‘2018-08-16’);…

    database 2023年5月22日
    00
  • Python 连接Redis两中方式

    一.通过django里设置settings文件连接redis #1.settings添加 CACHES = { “default”: { “BACKEND”: “django_redis.cache.RedisCache”, “LOCATION”: “redis://192.168.8.102:6379/0”, “OPTIONS”: { “CLIENT_CL…

    Redis 2023年4月11日
    00
  • python3+mysql学习——mysql查询语句写入csv文件中

    操作mysql:需要导入pymysql模块 参考代码: import pymysql# 打开数据库连接db = pymysql.connect(‘123.123.0.126′,’root’,’root’,’fdgfd’)# 使用cursor()方法创建一个游标对象 cursorcursor = db.cursor()# execute()方法执行sql查询c…

    MySQL 2023年4月13日
    00
  • SQL Server出现System.OutOfMemoryException异常的解决方法

    SQL Server出现System.OutOfMemoryException异常的解决方法 当客户端访问 SQL Server 数据库时,有时会出现 System.OutOfMemoryException 异常,本篇文章将介绍一些解决方法。 解决方法 方法一:增加可用的物理内存和虚拟内存 在 SQL Server 中,可能会出现由于物理内存和虚拟内存不足而…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部