MyBatis - 14 - 分页插件的配置及使用

2023-11-05

1、分页插件配置

在上一个笔记的项目的所有代码的基础上,做如下操作

(1)在pom.xml中添加依赖

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>

(2)在MyBatis的核心配置文件中配置插件

需要放入合适的位置
MyBatis核心配置文件,标签的顺序
properties?,settings?,typeAliases?,typeHandlers?,
objectFactory?,objectWrapperFactory?,reflectorFactory?,
plugins?,environments?,databaseIdProvider?,mappers?

<plugins>
<!--设置分页插件-->
    <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

2、分页插件的使用

新建测试类
在这里插入图片描述

回顾Mysql分页功能

/**
 * 回顾分页功能,分页功能需要在查询语句后用limit关键字 
 * limit后面要加两个数据,如下所示
 * limit index(从0开始),pageSize
 * index:表示当前页的起始索引
 * pageSize:表示每页显示的条数
 * pageNum:当前页的页码
 * index=(pageNum-1)*pageSize
 * 例如访问第3页,每页显示5条 则index = (3-1)*5 = 10
 */

MyBatis分页插件的使用

a>在查询功能之前使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能

pageNum:当前页的页码
pageSize:每页显示的条数

b>在查询获取list集合之后,使用PageInfo pageInfo = new PageInfo<>(List list, int
navigatePages)获取分页相关数据

list:分页之后的数据
navigatePages:导航分页的页码数

c>分页相关数据

Page{count=true, pageNum=1, pageSize=4, startRow=0, endRow=4, total=5, pages=2, reasonable=false, pageSizeZero=false}[Emp{eid=1, empName=‘rqs’, age=1, sex=‘男’, email=‘1@qq.com’, did=1}, Emp{eid=2, empName=‘lzh’, age=2, sex=‘男’, email=‘2’, did=2}, Emp{eid=3, empName=‘jack’, age=3, sex=‘男’, email=‘3@qq.com’, did=3}, Emp{eid=4, empName=‘admin_4’, age=100, sex=‘女’, email=‘789@qq.com’, did=3}]

常用数据:
pageNum:当前页的页码
pageSize:每页显示的条数
size:当前页显示的真实条数
total:总记录数
pages:总页数
prePage:上一页的页码
nextPage:下一页的页码
isFirstPage/isLastPage:是否为第一页/最后一页
hasPreviousPage/hasNextPage:是否存在上一页/下一页
navigatePages:导航分页的页码数
navigatepageNums:导航分页的页码,[1,2,3,4,5]

测试显示第1页,每页显示4条数据,打印page对象

package com.rqs.mybatis.test;

import com.rqs.mybatis.mapper.EmpMapper;
import com.rqs.mybatis.pojo.Emp;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;


public class PageHelperTest {


    @Test
    public void testPageHelper(){
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            SqlSession sqlSession = sqlSessionFactory.openSession(true);
            EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
            Page<Object> page = PageHelper.startPage(1, 4);//访问第一页,每页显示4条数据
            List<Emp> list = mapper.selectByExample(null);
            list.forEach(emp -> System.out.println(emp));
            //打印page对象
            System.out.println(page);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

测试获取分页相关数据

在查询获取list集合之后,使用PageInfo pageInfo = new PageInfo<>(List list, int
navigatePages)获取分页相关数据

list:分页之后的数据
navigatePages:导航分页的页码数

package com.rqs.mybatis.test;

import com.rqs.mybatis.mapper.EmpMapper;
import com.rqs.mybatis.pojo.Emp;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;


public class PageHelperTest {


    @Test
    public void testPageHelper(){
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            SqlSession sqlSession = sqlSessionFactory.openSession(true);
            EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
            PageHelper.startPage(1, 4);//访问第一页,每页显示4条数据
            List<Emp> list = mapper.selectByExample(null);
            //第一个参数:分页数据 第二个参数:导航分页的页码数,例如导航分页 上一页...2,3,【4】,5,6...下一页
            PageInfo<Emp> page = new PageInfo<>(list, 5);
            list.forEach(emp -> System.out.println(emp));
            //打印page对象
            System.out.println(page);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

分页相关数据

PageInfo{pageNum=1, pageSize=4, size=4, startRow=1, endRow=4, total=5, pages=2, list=Page{count=true, pageNum=1, pageSize=4, startRow=0, endRow=4, total=5, pages=2, reasonable=false, pageSizeZero=false}[Emp{eid=1, empName=‘rqs’, age=1, sex=‘男’, email=‘1@qq.com’, did=1}, Emp{eid=2, empName=‘lzh’, age=2, sex=‘男’, email=‘2’, did=2}, Emp{eid=3, empName=‘jack’, age=3, sex=‘男’, email=‘3@qq.com’, did=3}, Emp{eid=4, empName=‘admin_4’, age=100, sex=‘女’, email=‘789@qq.com’, did=3}], prePage=0, nextPage=2, isFirstPage=true, isLastPage=false, hasPreviousPage=false, hasNextPage=true, navigatePages=5, navigateFirstPage=1, navigateLastPage=2, navigatepageNums=[1, 2]}
在这里插入图片描述

上图来源

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyBatis - 14 - 分页插件的配置及使用 的相关文章

  • MyBatis-Plus深入 —— 条件构造器与插件管理

    前言 在前面的文章中 荔枝梳理了一个MyBatis Plus的基本使用 配置和通用Service接口 我们发现在MyBatis Plus的辅助增强下我们不再需要通过配置xml文件中的sql语句来实现基本的sql操作了 不愧是最佳搭档 在这篇

随机推荐

  • keil5编译出现Error: L6411E:的解决办法

    出现这个问题很大的可能是keil5与ads产生冲突 此时只需要删除ads的环境变量即可 如下图 将其值含有ads的系统变量和用户变量全部删除 然后新建一个用户变量 变量名为ARMCC5LIB 其值要看你keil的安装路径 我的值是Y sof
  • android查看app是platform_app,system_app还是priv_app

    untrusted app 第三方app 没有Android平台签名 没有system权限 platform app 有android平台签名 没有system权限 system app 有android平台签名和system权限 从上面划
  • Windows10下载安装openjdk11及配置环境变量

    Windows10下载安装openjdk11及配置环境变量 下载JDK 首先我们需要下载java开发工具包JDK 下载地址 https cn azul com downloads zulu community version java 11
  • UE4外包团队:更新一下UE4和Unity3D案例

    全部的贴图都是用出的法线贴图构建的话只用了阳光和天光 都是静态光源 视角是第一人称模板最后的效果嘛就是全4K 120帧 0错误0警告 场景小是小了点但是效果还不错 工作活有时间更新 欢迎有UE4和Unity项目外包的联系我们 谢谢 转载于
  • CNN卷积核

    接着呢 我们需要处理我们的xs 把xs的形状变成 1 28 28 1 1代表先不考虑输入的图片例子多少这个维度 后面的1是channel的数量 因为我们输入的图片是黑白的 因此channel是1 例如如果是RGB图像 那么channel就是
  • Kafka - a simple consumer demo - c++

    Kafka 如果有 kafka 基础的同学可以不用看前面的废话 可以从第五条 配置 开始看起 代码在第七条 前言 官网比我这标准多了 官网跳转 大家可以先完成quickStart部分kafka单机生产消费 一 概念简介 Kafka 是一个分
  • 谷歌语法(详解+举例)

    一 谷歌语法是什么 谷歌语法就是利用搜索引擎在渗透测试过程搜索到特定页面的一种语法 二 如何利用谷歌语法 谷歌语法基础的符号 xxx 将要搜索的关键字用引号括起来 表示完全匹配 即关键词不能分开 顺序也不能变 例如 腾讯课堂如果不加 的话
  • 内存时延效能

    时延 Latency 小张一看到这个图 不禁大叫 太复杂了 看得我都犯密集恐惧症了 看不懂 没关系 我们拆开了一个个看 1 CL CAS Latency CL是指CAS发出之后 仍要经过一定的时间才能有数据输出 从CAS与读取命令发出到第一
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 在云服务器存储数据的10个好处

    本文编辑 富哥 云服务器已经成为最适合在线存储数据的选项 在较早时期 大多数公司依靠内部服务器来存储他们不断增长的数据和在线文件 但今天将数据存储在在线的云服务器中已经成为新的趋势 因为它允许无限存储 将所有数据存储在云中最好的方面是确保可
  • Java中类的构成

    Java中的每个类一般包含属性 构造器 块 方法 内部类五部分 属性 用来定义对象的数据 构造器 构造器也是方法 每一个类中都一定会有构造器 包含有参构造器和无参构造器每一个对象在创建的时候都会调用构造器 如果没有构造器 系统将提供一个默认
  • 十大经典排序算法总结

    https blog csdn net hellozhxy article details 79911867
  • AI嵌入式全景:各厂商、系列和开发工具的综合概览

    要看几个方面 1 算力 2 支持何种模型 3 是否支持可视化的窗口系统 一般而言各个平台均采用linux操作系统 官方提供对应SDK 安装好后可使用硬件加速资源 而且如果要使用其硬件加速 一般都要完成模型转换 将模型转为该平台所特有的格式
  • Spring Boot 学习研究笔记(十) -SpringBoot JAP 踩坑总结

    SpringBoot JAP 踩坑总结 一 JSON 字段映射处理流程 1 实现类型转换接口 package com call show common utils import com fasterxml jackson core Json
  • 最简单的鼠标放置悬停显示省略的内容,为标签的title赋值

    翻了一下午没看到能看懂的代码 对于我这个后台开发实在天书一般 原始需求为 内容过长显示为省略号 鼠标放置时再将全部内容悬浮展示出来 内容是放置在p标签中的 设置一下style即可 注意这四个属性缺一不可 p style width 100
  • 雪花算法记录

    引子 伴随着业务的日渐庞大 单库单表的数据库可能无法支持业务的读写 需要对数据库进行分库分表 原来数据库中 通常使用自增id的方式生成主键 分库分表之后 如果仍然采用原来的方式 在多个表之间主键会发生重复 分库分表后 如何保证多张表中的 i
  • webpack5+mockjs

    上篇提到升级 vue cli 5 0 1后 发现webpack 是v5 之前配置devServer after异常 于是认真看了一下文档 webpack v5文档 v5的devServer去掉了get和after 添加了setupMiddl
  • 日期的生成

    获取系统当前时间 日期类型为timestamp 日期格式为2010 11 04 16 19 42 方法1 Timestamp d new Timestamp System currentTimeMillis 方法2 Date date ne
  • 实对称矩阵的性质_今天行列式的矩阵是一个实对称矩阵, 主对角线是同一个元素, 其余位置是另一元素。该矩阵的行列式有相当好的性质, 同学们要加以记忆...

    行列式计算 5 01 前言 1 今天我们继续讨论特殊行列式的计算思路与方法 今天这组题的行列式的矩阵是一个实对称矩阵 主对角线是同一个元素 其余位置是另一元素 该矩阵的行列式有相当好的性质 需要同学们加以记忆 2 第1题 第一个行列式的计算
  • MyBatis - 14 - 分页插件的配置及使用

    文章目录 1 分页插件配置 1 在pom xml中添加依赖 2 在MyBatis的核心配置文件中配置插件 2 分页插件的使用 回顾Mysql分页功能 MyBatis分页插件的使用 测试显示第1页 每页显示4条数据 打印page对象 测试获取