小书MybatisPlus第4篇表格分页与下拉分页查询

36次阅读

共计 2147 个字符,预计需要花费 6 分钟才能阅读完成。

本文为 mybatis 系列文档的第 4 篇,前三篇请拜访上面的网址。

  • 小书 MybatisPlus 第 1 篇 - 整合 SpringBoot 疾速开始增删改查
  • 小书 MybatisPlus 第 2 篇 - 条件结构器的利用及总结
  • 小书 MybatisPlus 第 3 篇 - 自定义 SQL

一、让 Spring Boot-MybatisPlus 反对分页

在曾经集成了 Mybatis Plus 的 Spring 我的项目中退出如下分页拦截器的配置,让 MybatisPlus 反对分页

@Configuration
public class MybatisPlusConfiguration {
    // 配置分页拦截器
    @Bean
    public PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();
    }
}

二、单表查问分页 - 表格分页

@Test
public void testSelect() {LambdaQueryWrapper<User> query = new LambdaQueryWrapper<>();
  query.ge(User::getAge,10)      // 查问条件:年龄大于 10
       .orderByDesc(User::getAge);   // 依照年龄的倒序排序

  Page<User> page = new Page<> (1,10);   // 查问第 1 页,每页 10 条数据
  userMapper.selectPage(page,query);   //page 分页信息,query 查问条件

  System.out.println("总页数:"+ page.getPages());
  System.out.println("总记录数:"+ page.getTotal());

  // 分页返回的对象与传入的对象是同一个
  List<User> list = page.getRecords();
  list.forEach(System.out::println);
}

查问输入后果如下:

 总页数:1
总记录数:6
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=2, name=Jack, age=20, email=test2@baomidou.com)
User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=1280261858003038209, name= 字母哥, age=18, email=null)

在分页查问过程中,一共执行了两条 SQL

# 第一条 SQL 用于查问在 query 条件下的总条数
SELECT COUNT(1) FROM user WHERE age >= ? 

# 第二条 SQL 用于查问具体的数据
SELECT id,name,age,email 
FROM user 
WHERE age >= ? 
ORDER BY age DESC 
LIMIT ?,? 

这种分页形式比拟适宜于传统利用中,表格分页的开发。须要给出总条数,以及每页多少条。

三、不查问总记录数的分页 - 下拉分页

在一些古代的互联网资讯网站,或者利用 app。通常不会给出数据的总条数,而是通过鼠标或者手势,每次下拉都加载 n 条数据。

这种状况下的分页通常就不须要查问总条数了,如果查问总条数节约数据库的计算资源,使响应工夫变长。所以咱们应该只做分页数据查问,不查问总条数。设置 page 分页的第三个参数为 false。

输入后果总页数和总条数都是 0,然而分页数据失常查问回来了。

 总页数:0
总记录数:0
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=2, name=Jack, age=20, email=test2@baomidou.com)
User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=1280261858003038209, name= 字母哥, age=18, email=null)

只执行了这样一个 SQL

ELECT id,name,age,email 
FROM user 
WHERE age >= ? 
ORDER BY age DESC 
LIMIT ?,? 

欢送关注我的博客,外面有很多精品合集

  • 本文转载注明出处(必须带连贯,不能只转文字):字母哥博客。

感觉对您有帮忙的话,帮我点赞、分享!您的反对是我不竭的创作能源!。另外,笔者最近一段时间输入了如下的精品内容,期待您的关注。

  • 《手摸手教你学 Spring Boot2.0》
  • 《Spring Security-JWT-OAuth2 一本通》
  • 《实战前后端拆散 RBAC 权限管理系统》
  • 《实战 SpringCloud 微服务从青铜到王者》
  • 《VUE 深入浅出系列》

正文完
 0