MyBatisPlus(十五)分页查询

向右看齐 2023-10-16 18:18 93阅读 0赞

说明

MyBatisPlus 提供了分页查询的功能。

MyBatisPlus 的分页功能,是通过分页插件实现的。要使用分页功能,需要配置分页插件的拦截器。

MyBatisPlus 的分页功能,可以通过内置的API接口实现;也可以通过自定义的 mapper#method 使用分页。

分页插件拦截器

此处的代码可以参考官网的示例。

  1. package com.example.core.config;
  2. import com.baomidou.mybatisplus.annotation.DbType;
  3. import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
  4. import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
  5. import org.mybatis.spring.annotation.MapperScan;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. @Configuration
  9. @MapperScan("com.example.web")
  10. public class MybatisPlusConfig {
  11. /**
  12. * 添加分页插件
  13. */
  14. @Bean
  15. public MybatisPlusInterceptor mybatisPlusInterceptor() {
  16. MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  17. interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 如果配置多个插件,切记分页最后添加
  18. // interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbType
  19. return interceptor;
  20. }
  21. }

官网示例:
在这里插入图片描述

分页查询(MyBatisPlus接口)

代码

  1. /**
  2. * 分页查询用户列表。
  3. * <br>
  4. * 查询条件:查询第2页的数据,每页3条数据。
  5. */
  6. @Test
  7. void selectPage() {
  8. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
  9. IPage<User> pageQuery = new Page<>(2, 3);
  10. IPage<User> page = mapper.selectPage(pageQuery, wrapper);
  11. log.info("当前页码:{}", page.getCurrent());
  12. log.info("每 1 页的数据量:{}", page.getSize());
  13. log.info("总数据量:{}", page.getTotal());
  14. log.info("总页数:{}", page.getPages());
  15. log.info("数据列表:{}", page.getRecords());
  16. }

查询效果

在这里插入图片描述

自定义的 mapper#method 使用分页

官网说明

在这里插入图片描述

代码示例

查询方法:Mapper.java

  1. package com.example.web.mapper;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.example.web.entity.User;
  4. import java.util.List;
  5. public interface MybatisMapper {
  6. /**
  7. * 分页查询用户列表。
  8. *
  9. * @param page 分页参数
  10. * @param beginAge 开始年龄(大于等于)
  11. * @return 用户列表分页数据
  12. */
  13. IPage<User> selectPageByBeginAge(IPage<User> page, Integer beginAge);
  14. }

方法实现:Mapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.example.web.mapper.MybatisMapper">
  6. <select id="selectPageByBeginAge" resultType="com.example.web.entity.User">
  7. select * from tb_user where age >= #{beginAge}
  8. </select>
  9. </mapper>

方法调用

  1. /**
  2. * 分页查询用户列表。
  3. * <br>
  4. * 查询条件:开始年龄(大于等于),查询第2页的数据,每页3条数据。
  5. */
  6. @Test
  7. void selectPage() {
  8. IPage<User> pageQuery = new Page<>(2, 3);
  9. IPage<User> page = mapper.selectPageByBeginAge(pageQuery, 20);
  10. log.info("当前页码:{}", page.getCurrent());
  11. log.info("每 1 页的数据量:{}", page.getSize());
  12. log.info("总数据量:{}", page.getTotal());
  13. log.info("总页数:{}", page.getPages());
  14. log.info("数据列表:{}", page.getRecords());
  15. }

查询效果

在这里插入图片描述

数据库内的数据

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,93人围观)

还没有评论,来说两句吧...

相关阅读