PageHelper的简单使用

2023-11-12

PageHelper是mybatis框架的一个插件,用于支持在mybatis执行分页操作,使用非常方便,在这儿写一下基本的使用.

github文档地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

1.准备一个maven项目,导入相关依赖

Mybatis

log4j(可以在控制台查看sql语句的执行)

mysql-connector(mysql的驱动包)

lombok(用于生成setter,getter方法)

<!-- mybatis依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <!-- mysql -->
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.18</version>
        </dependency>

        <!-- 日志依赖 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- lombok -->
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
            <scope>provided</scope>
        </dependency>

       
        <!-- pageHelper依赖 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.10</version>
        </dependency>

2.准备一张表

名为student,三个字段,id,name,age,准备一些数据

3,配置项目

首先在resources目录下,创建一个Mybatis-config.xml文件,用于做一些全局的mybatis基本的配置,例如数据库连接信息,事务,mapper映射文件路径,日志实现,类的别名,也包含了分页插件的基本配置

<configuration>
	<properties resource="db.properties" />
	<settings>
        <!--日志的实现是LOG4J-->
		<setting name="logImpl" value="LOG4J" />
	</settings>
	<typeAliases>
		<package name="com.ren.domain" />
	</typeAliases>
    <!--mybatis的插件配置-->
	<plugins>
		<!-- com.github.pagehelper为PageHelper类所在包名 -->
		<plugin interceptor="com.github.pagehelper.PageInterceptor">
			<!-- 表示使用mysql的分页方法 -->
			<property name="helperDialect" value="mysql" />
			<!-- 表示当页码长度为0 的时候,就不进行分页查询 -->
			<property name="pageSizeZero" value="true"/>
		</plugin>
	</plugins>
	
	<!-- 配置连接数据库四要素 -->
	<environments default="dev">
		<environment id="dev">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driverClassName}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<mapper resource="com/ren/mapper/StudentMapper.xml" />
	</mappers>
</configuration>

4.编写mapper,domain类

Student类,字段名和数据库表中对应的字段名尽量一致

5.首先做高级查询(条件查询)编写StudentMapper类和QueryObject类,在StudentMapper类中编写一个高级查询的方法,名为queryByConditions,根据姓名关键字和年龄范围查询,把查询条件封装到QueryObject类中.QueryObject类包括了姓名的关键字,年龄的范围,QueryObject类中的currentPage,和pageSize用于存储分页的条件

StudentMapper类:

QueryObject类:

编写StudentMapper对应的mapper文件.StudentMapper.xml

4.在mybatis中引入一段配置

<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <!-- 使用什么数据库 -->
        <property name="helperDialect" value="mysql"/>
	</plugin>
</plugins>

5.编写分页的业务,IStudentService,以及实现类StudentServiceImpl,page(qo)方法最终返回一个PageInfo对象

IStudentService的实现类StudentServiceImpl

PageHelper库中中有一个核心类PageInfo封装查询的list,包含了分页信息(结果总数,当前页,上一页,下一页,当前页的结果集),还有一个PageHelper类,在分页查询之前使用PageHelper.startPage(当前页,每一页的条数),完成分页查询操作

调用自己的查询方法queryByConditions()方法查询出的list对象封装到PageInfo中即可完成,PageInfo中包括了分页的结果集

把高级查询返回的list对象(list对象)作为构造器参数传入PageInfo中,即可.

使用Junit5单元测试编写一个StudentMapperTest类

可以观察sql语句,在mapper文件中并没有写limit,pageHelper已经帮我们加上了limit关键字完成了查询.OK了

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

PageHelper的简单使用 的相关文章

随机推荐

  • pytorch CPU与GPU模型参数相互加载

    文章目录 1 模型保存以及加载方法 2 单 GPU 和 单 CPU 参数 模型相互加载 3 多 GPU 模型 参数 4 单 GPU or CPU 模型加载多 GPU 参数 5 单 GPU or CPU 加载 多GPU模型 参数 6 多 GP
  • linux下jdk的安装

    目录 获取文件下载地址 官网获取文件下载地址 下载文件到指定目录下并修改改文件名 卸载已经存在的JDK 查看系统是否安装JDK 卸载JDK 安装JDK 赋予权限 安装JDK 配置JDK的环境变量 在配置文件的最底部加上以下配置 重新刷新配置
  • Java实现多线程下载 URL以及URLConnection

    主线程 public class MultiThreadDown public static void main String args throws Exception 初始化Downutil对象 final DownUtil downu
  • linux中解压tar.gz或zip类型的文件到具体文件夹

    zip对应的解压缩命令为unzip 命令格式 unzip 选项 压缩包名 选项 d 指定解压缩位置 示例 unzip d tmp test zip 将tar gz文件解压到指定的目录中 tar zxvf tmp tar gz C tmp 在
  • WEB常见的扫描器具体使用方法

    常用的WEB扫描器 1 awvs Acunetix Web Vulnerability Scanner 简称AWVS 是一款知名的网络漏洞扫描工具 它通过网络爬虫测试你的网站安全 检测流行安全漏洞 现已更新到10 下载地址 链接 https
  • Cisco_路由器基础命令

    Cisco 路由器基础命令 1 接口描述 路由器F0 1 或S0 1 接口命名为ABC Router config interface fastEthernet 0 1 进入到接口fastEthernet 0 1 Router config
  • mysql基础查询

    mysql基础查询 进程的相关信息 查看information schema数据库中的PROCESSLIST表来获取正在执行的查询进程的信息 该表包含了当前连接到MySQL服务器的所有进程的相关信息 包括进程ID id 和进程名称 name
  • JavaScript 简介 及引用方式

    js的引用方式 3种 1 行内引用 通过在开标签中的事件属性引用js的函数 2 内部引用 通过在script标签中编写js代码使用 1 script标签可以写在页面任何位置 2 script标签通常使用在body中的最后 或者body的后面
  • csv怎么保存开头数字0_【EXCEL必知必会】大基本功[4]—分列以及CSV文件处理

    阅读全文大概需要4 5分钟 本文是专栏 Excel必知必会 的第四篇教程 如果想了解专栏内容规划 请参阅开篇 温馨提示 如果您已经特别熟悉Excel 大可不必再看这篇文章 或只挑选部分 文中对Excel的说明和操作基于Mac Excel20
  • Git的原理及使用

    一 简述 在Git出现之前 大部分公司还是用SVN进行项目管理的 这里来对比一下 集中式 SVN 集中式的版本控制系统都有一个单一的几种管理的服务器 保存所有文件的修订版本 而协同工作的人们都通过客户端连接到这台服务器 取出最新的文件或者提
  • linux基础课程2-----熟练使用Linux系统命令

    目录 一 系统信息类命令是对系统的各种信息进行显示和设置的命令 1 dmesg命令 2 free命令 3 cal命令 4 clock命令 二 熟练使用进程管理类命令 1 ps命令 2 pidof命令 3 kill命令 4 killall命令
  • 用xpath获取html源码

    from lxml import html import requests url http navi cnki net knavi JournalDetail GetArticleList year 2018 issue 04 pykm
  • C++设计模式_02_面向对象设计原则

    文章目录 1 面向对象设计 为什么 2 重新认识面向对象 3 面向对象设计原则 3 1 依赖倒置原则 DIP 3 2 开放封闭原则 OCP 3 3 单一职责原则 SRP 3 4 Liskov 替换原则 LSP 3 5 接口隔离原则 ISP
  • 「python」关于sympy的使用笔记

    关于sympy的使用笔记 这是一篇使用python的符号计算工具包的笔记 随本人使用情况更新 1 变量 sympy中的变量可分为两种 常数变量 一般变量 from sympy import t symbols t real True con
  • 面面俱到!涵盖Java所有核心技术,阿里新产2023版Java面试核心突击手册太全了!

    程序员面试背八股 可以说是现在互联网开发岗招聘不可逆的形式了 其中最卷的当属Java 网上动不动就是成千上百道的面试题总结 你要是都能啃下来 平时技术不是太差的话 面试基本上问题就不会太大 这时候尴尬的现象就出现了 虽然八股文背的好并不能代
  • OpenBSD 安装

    OpenBSD 被誉世上最安全的系统 OpenBSD有最前沿的安全技术 适合于做防火墙和分布式环境下的私有网络服务 OpenBSD组每6个月发布一个新的发行版 即每年的 月 日和11月1日发布 你可以在此找到关于开发周期的更多信息 Open
  • Redis缓存更新策略、详解并发条件下数据库与缓存的一致性问题以及消息队列解决方案

    0 前言 我们知道 缓存由于在内存中 数据处理速度比直接操作数据库要快很多 因此常常将数据先读到缓存中 再进行查询 更新等操作 但与之而来的问题就是 内存中的数据不仅没有持久化 而且需要保证redis和数据库中数据的一致性 针对这个问题 r
  • Matlab 如何绘制复杂曲线的包络线

    Matlab 如何绘制复杂曲线的包络线 http jingyan baidu com article aa6a2c14d36c710d4c19c4a8 html 如果一条曲线 比如声音波形 波动很大 曲折复杂 可以通过绘制包络线的方式使其更
  • C语言——通讯录的实现

    目录 创建项目环境 创建结构体 test c文件 创建通讯录 增加联系人 打印通讯录 删除指定联系人 查找联系人 更改联系人 排列通讯录 完善通讯录 代码 结语 创建项目环境 对于这个通讯录的实现 我们可以像写三子棋一样 怎样去思考 那首先
  • PageHelper的简单使用

    PageHelper是mybatis框架的一个插件 用于支持在mybatis执行分页操作 使用非常方便 在这儿写一下基本的使用 github文档地址 https github com pagehelper Mybatis PageHelpe