关于mybatis中一个sql返回总行数与页面内容两种数据!(提高翻页功能性能)

118 阅读1分钟

MySQL的SQL_CALC_FOUND_ROWS是一个优化查询性能的技巧,它可以在查询结果中返回一个额外的行,该行包含有关查询结果的总行数。这在某些情况下非常有用,例如当你需要分页显示数据时。

下面是一个使用SQL_CALC_FOUND_ROWS进行分页查询的示例:

  1. 首先,我们需要计算总记录数。我们可以使用COUNT(*)函数和SQL_CALC_FOUND_ROWS关键字来实现这一点。假设我们有一个名为users的表,我们想要获取第2页的数据,每页显示10条记录。
SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 10 OFFSET 10;
    
  1. 然后,我们需要获取总记录数。我们可以使用SELECT FOUND_ROWS()函数来实现这一点。
SELECT FOUND_ROWS() as total_rows;
  1. 最后,我们可以将这两个查询结合起来,以获取总记录数并获取第2页的数据。
SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 10 OFFSET 10;
SELECT FOUND_ROWS() as total_rows;  

通过这种方式,我们可以在一次查询中获取所需的信息,从而提高查询性能

在mybatis中使用我们需要在数据库连接时allowMultiQueries设置为true

image.png

使用mybatis 使用resultMap接收,接收两种类型,使用逗号分隔,其中baseResultMap就是对应页面的数据

image.png

image.png

接收使用list的泛型接收。

image.png

这样list集合有两个元素,第一个是总页数,第二个就是页面的数据了。 至此结束!!!!