MyBatis-Plus 3.4.0开始,不再使用旧版本的PaginationInterceptor ,而是使用MybatisPlusInterceptor

下面是MyBatis-Plus 3.4.3.3新版分页的使用方法。

配置

使用分页插件需要配置MybatisPlusInterceptor,将分页拦截器添加进来:

@Configuration
public class MyBatisPlusConfig {/*** 分页插件配置** @return*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 向MyBatis-Plus的过滤器链中添加分页拦截器,需要设置数据库类型(主要用于分页方言)interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}

使用分页功能

和分页功能有关的类是Page<T>类,构造分页参数的方法:

Page<UserEntity> page = new Page<>(1, 1);
  • 第一个参数是页码(从1开始),第二个参数是分页大小。

使用的时候只需要将创建的Page对象作为第一个参数传入即可。

首先,定义接口:

@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {/*** 测试分页插件** @param page* @return*/Page<UserEntity> testPage(Page<UserEntity> page);
}

然后,编写SQL

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.tao.adminserver.mapper.UserMapper"><!-- 配置数据库字段和Java类中字段的映射关系 --><resultMap id="baseResultMap" type="com.tao.adminserver.entity.UserEntity"><id column="id" property="id" jdbcType="BIGINT" javaType="java.lang.Long"/><result column="name" property="name" jdbcType="VARCHAR" javaType="java.lang.String"/><result column="age" property="age" jdbcType="INTEGER" javaType="java.lang.Integer"/><result column="email" property="email" jdbcType="VARCHAR" javaType="java.lang.String"/></resultMap><!-- 测试分页插件 --><select id="testPage" resultMap="baseResultMap">select * from tb_user</select></mapper>

SQL中不需要用limit来手动分页,分页插件会自己加上的。

最后,来测试一下:

    @Testpublic void testPage() {// 分页查第一页Page<UserEntity> page = new Page<>(1, 2);Page<UserEntity> pageResult = userMapper.testPage(page);System.out.println(JSON.toJSONString(pageResult));// 分页查第二页page = new Page<>(2, 2);pageResult = userMapper.testPage(page);System.out.println(JSON.toJSONString(pageResult));}

注意:参数和结果都是用Page对象来包装。

控制台打印的日志:

==>  Preparing: SELECT COUNT(*) FROM tb_user
==> Parameters:
<==    Columns: COUNT(*)
<==        Row: 3
<==      Total: 1
==>  Preparing: select * from tb_user LIMIT ?
==> Parameters: 2(Long)
<==    Columns: id, name, age, email
<==        Row: 7, Mike, 40, test7@baomidou.com
<==        Row: 8, Tank, 40, test8@baomidou.com
<==      Total: 2......==>  Preparing: SELECT COUNT(*) FROM tb_user
==> Parameters:
<==    Columns: COUNT(*)
<==        Row: 3
<==      Total: 1
==>  Preparing: select * from tb_user LIMIT ?,?
==> Parameters: 2(Long), 2(Long)
<==    Columns: id, name, age, email
<==        Row: 9, Adele, 22, test9@baomidou.com
<==      Total: 1

可以看出,分页之后,首先count计算了总数,然后在查询的时候自动加上了limit语句。

分页结果对象如下:

{"current": 1, // 当前是第几页"optimizeCountSql": true,"orders": [],"pages": 2,  // 总共有几页"records": [ // 当前页的记录详细信息{"age": 40,"email": "test7@baomidou.com","id": 7,"name": "Mike"},{"age": 40,"email": "test8@baomidou.com","id": 8,"name": "Tank"}],"searchCount": true,"size": 2, // 当前页的数据量(分页大小)"total": 3 // 数据总量
}

MyBatis-Plus分页插件的使用相关推荐

  1. SpringBoot集成MyBatis的分页插件PageHelper

    [写在前面] 项目的后台管理系统需要展示所有资源信息,select * 虽然方便但数据量过于庞大会严重降低查找效率,页面加载慢,用户体验差.分页自然是必要选择,但原生的方法过于繁杂.MyBatis的分 ...

  2. Spring Boot2.0 整合mybatis、分页插件、druid

    2019独角兽企业重金招聘Python工程师标准>>> 前言 本文主要是针对SpringBoot2.0.2版本,实现整合mybatis.分页插件.druid等组件,实现完整的web服 ...

  3. SpringBoot集成MyBatis的分页插件PageHelper(回头草)

    俗话说:好?不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心 ...

  4. 使用mybatis框架分页插件报错### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax;

    报错信息如下: ### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the ...

  5. Java 逻辑分页 和 物理分页(mybatis的分页插件PageHelper)

    目录 1 逻辑分页和物理分页的区别 2 项目框架展示 2.1 相关技术 2.2 相关依赖和配置 2.2.1 pom依赖 2.2.2 yml配置 2.3 实体类 3 逻辑分页 3.1 Sevice层 3 ...

  6. PageHelper——一款Mybatis的分页插件

    PageHelper是mybatis一个分页插件,原理就是基于mybatis拦截器,可以用它完成分页 MyBatis提供了拦截器接口,我们可以实现自己的拦截器, 将其作为一个plugin装入到SqlS ...

  7. Mybatis之分页插件

    在前后端进行交互的时候,很多管理系统都需要进行分页显示,mybatis的分页插件可以帮助我们更快捷地将数据进行分页 一.分页插件介绍 分页可以将很多条结果进行分页显示. 如果当前在第一页,则没有上一页 ...

  8. MyBatis Plus分页插件常用配置

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 配置详情 MyBatis Plus分页插件常用配置如下: import com.baomido ...

  9. java mvc 分页查询条件_java分页条件查询-GridManager.js表格插件+Pageable分页对象+mybatis pagehelper分页插件...

    总览: 一. GridManager.js表格插件 直接上插件API:链接地址 感觉该插件简单好用,插件作者也是有问必答,nice 二. 添加依赖 后端: pom文件添加: 1.7.0.RELEASE ...

  10. MyBatis Generator分页插件RowBoundsPlugin坑

    一.Mybatis Generator设置分页 Mybatis Generator没有设置分页,但自带了个RowBoundsPlugin分页插件,故而配置 <plugin type=" ...

最新文章

  1. 第六章练习题和知识面扩充
  2. 整型数与字符串之间的转化
  3. boost::hana::id用法的测试程序
  4. 如何高效排查系统故障?一分钱引发的系统设计“踩坑”案例
  5. 话里话外:企业管理软件的方案设计要规避哪些风险
  6. oracle 取时间比较,Oracle最大日期获取方法
  7. 使用iScroll时,input等不能输入内容的解决方法
  8. .NET C#获取当前网页地址信息
  9. direct3D 状态设置
  10. FFMPEG类库打开流媒体的方法(需要传参数的时候)
  11. 记录QT在实时显示摄像头数据时候切换TAB页出现异常
  12. spring mvc路径匹配原则
  13. SpringBoot使用RestTemplate 摘要认证
  14. 返回固定页面的http服务器
  15. 未雨绸缪,数据保护之NBU介质备份
  16. Cpp--string常用函数用法总结
  17. 8个免费恶搞照片在线生成网站
  18. 可汗学院公开课——统计学学习:35-46
  19. luatos的一些说明
  20. SSD:单目多目标检测器

热门文章

  1. Adobe Premiere Pro快速入门教程
  2. win7系统下连网络打印机打印反应很慢解决方法
  3. abc android软件,学习ABC Learn ABC软件
  4. textpad和masm搭建汇编环境
  5. 字体设计符号组合多功能微信小程序源码 带流量主
  6. [编程题] 困兽之斗
  7. 中专在学校里考的计算机四级证属于中级职业技能证书吗?
  8. rj45 千兆接口定义_rj45接口定义,大神教你秒懂rj45的接线方法【详细方法】
  9. Idea分享项目到全球最大同x交友网站gayhub居然失败了!我居然没有权限!来看看解决方法吧
  10. 深入理解JVM - ZGC垃圾收集器