当前位置: 首页 > news >正文

MyBatis-Plus分页插件的使用

从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类,构造分页参数的方法:

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来手动分页,分页插件会自己加上的。

最后,来测试一下:

控制台打印的日志:

==>  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 // 数据总量
}
http://www.xdnf.cn/news/96967.html

相关文章:

  • Python常用的第三方模块之【jieba库】支持三种分词模式:精确模式、全模式和搜索引擎模式(提高召回率)
  • React组件测试完全指南:从入门到实践
  • 精益数据分析(16/126):掌握关键方法,探寻创业真谛
  • 【Pandas】pandas DataFrame mod
  • 位置编码学习笔记
  • Linux:进程地址空间
  • 【LangChain4j】AI 第一弹:LangChain4j 的理解
  • 32单片机——GPIO寄存器
  • 05/06-Java入门-HelloWorld和编程工具的使用
  • c语言指针3
  • 初识分布式事务原理
  • VMware中CentOS 7虚拟机设置固定IP(NAT模式)完整教程
  • Scanpy可视化技巧--UMAP图优化
  • 数据的加载与保存
  • 基于Quill的文档编辑器开发日志(上)——前端核心功能实现与本地存储管理
  • Java 环境配置详解(Windows、macOS、Linux)
  • 新书推荐——《游·思——看世界 上》孔祥超 著
  • 【MQ篇】RabbitMQ之工作队列模式!
  • Kotlin中实现静态
  • 智能文档解析系统架构师角色定义
  • 链表系列一>两数相加
  • 如何将 Azure Active Directory (Azure AD) 作为 SAML IdP 对接到 Keycloak
  • 从零手写 RPC-version1
  • django软件开发招聘数据分析与可视化系统设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
  • 搭建Stable Diffusion图像生成系统实现通过网址访问(Ngrok+Flask实现项目系统公网测试,轻量易部署)
  • JavaEE学习笔记(第二课)
  • C#开发usb hid 简易GUI调试工具记录
  • 2025山东省职业院校技能大赛网络安全赛项样题
  • rk3588 驱动开发(二)第四章嵌入式 Linux LED 驱动开发实验
  • 初阶数据结构--排序算法(全解析!!!)