当前位置: 首页 > 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.dtcms.com/a/151433.html

相关文章:

  • Mysql 简单数据查询
  • Node.js 开发用户登录功能(使用mysql实现)
  • 深入理解 G1 GC:已记忆集合(RSet)与收集集合(CSet)详解
  • JAVA----方法
  • 结合地理数据处理
  • 《算法笔记》10.4小节——图算法专题->最短路径 问题 D: 最短路径
  • 与Ubuntu相关命令
  • 【毒理学视角】54种高毒物品的毒理机制
  • 龙虎榜——20250423
  • [AI]从零开始的TensorRT加速推理YOLO11教程
  • Linux笔记---进程间通信:匿名管道
  • SpringMVC从入门到上手-全面讲解SpringMVC的使用.
  • 线程概念与控制
  • box-sizing: border-box的用法和作用
  • 【Maven】特殊pom.xml配置文件 - BOM
  • RK3568平台开发系列讲解(调试篇)debugfs文件系统及常见调试节点介绍
  • HCIP第三次作业
  • 【Qwen2.5-VL 踩坑记录】本地 + 海外账号和国内账号的 API 调用区别(阿里云百炼平台)
  • CentOS 系统 DeepSeek 部署
  • 实体店的小程序转型之路:拥抱新零售的密码-中小企实战运营和营销工作室博客
  • 基于自适应汉克尔子空间的快速且超高分辨率的弥散磁共振成像(MRI)图像重建|文献速递-深度学习医疗AI最新文献
  • 节点内存升高排查
  • 集结号海螺捕鱼活动系统开发全解(第五篇)
  • 云计算领域需掌握的核心技术
  • Python数据清洗笔记(上)
  • MVVM框架详解:原理、实现与框架对比
  • 安卓14默认赋予应用权限
  • 封装 element-ui 二次弹框
  • Execl 最佳字体和大小推荐[特殊字符]
  • 2025年【安全员-C证】考试试卷及安全员-C证模拟考试