PageHelper分页插件的使用

简介: PageHelper分页插件的使用

1 分页插件介绍

  • 分页可以将很多条结果进行分页显示。
  • 如果当前在第一页,则没有上一页。如果当前在最后一页,则没有下一页。

需要明确当前是第几页,这一页中显示多少条结果。

MyBatis分页插件总结

1.在企业级开发中,分页也是一种常见的技术。而目前使用的 MyBatis 是不带分页功能的,如果想实现分页的 功能,需要我们手动编写 LIMIT 语句。但是不同的数据库实现分页的 SQL 语句也是不同的,所以手写分页 成本较高。这个时候就可以借助分页插件来帮助我们实现分页功能。

2.PageHelper:第三方分页助手。将复杂的分页操作进行封装,从而让分页功能变得非常简单。

2 分页插件的使用

MyBatis可以使用第三方的插件来对功能进行扩展,分页助手PageHelper是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据

开发步骤:

①导入与PageHelper的jar包

②在mybatis核心配置文件中配置PageHelper插件

<!-- 注意:分页助手的插件  配置在通用mapper之前 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
    <!-- 指定方言 -->
    <property name="dialect" value="mysql"/>
</plugin>

③测试分页数据获取

@Test
public void testPageHelper(){
    //设置分页参数
    PageHelper.startPage(1,2);
    List<User> select = userMapper2.select(null);
    for(User user : select){
        System.out.println(user);
    }
}

3 分页插件的参数获取

获得分页相关的其他参数

//其他分页的数据
PageInfo<User> pageInfo = new PageInfo<User>(select);
System.out.println("总条数:"+pageInfo.getTotal());
System.out.println("总页数:"+pageInfo.getPages());
System.out.println("当前页:"+pageInfo.getPageNum());
System.out.println("每页显示长度:"+pageInfo.getPageSize());
System.out.println("是否第一页:"+pageInfo.isIsFirstPage());
System.out.println("是否最后一页:"+pageInfo.isIsLastPage());

4 分页插件知识小结

分页:可以将很多条结果进行分页显示。

  • 分页插件 jar 包: pagehelper-5.1.10.jar jsqlparser-3.1.jar
  • :集成插件标签。

分页助手相关 API


  1. PageHelper:分页助手功能类。

  2. startPage():设置分页参数
  3. PageInfo:分页相关参数功能类。
  4. getTotal():获取总条数
  5. getPages():获取总页数
  6. getPageNum():获取当前页
  7. getPageSize():获取每页显示条数
  8. getPrePage():获取上一页
  9. getNextPage():获取下一页
  10. isIsFirstPage():获取是否是第一页
  11. isIsLastPage():获取是否是最后一页

5 分页插件的使用

第一步:导分页jar包

去maven库找一个

第二步: 集成分页助手插件

在主配置文件的typeAliases标签后添加如下代码

<plugins>
     <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

第三步:添加查询全部功能

UserDao接口中新添加的方法

List<User> findAll();

UserMapper中添加以下配置

<select id="findAll" resultType="user">
    select * from `user`
</select>

第四步:测试类中使用分页

@Test
public void testPage()throws Exception{
    /*1.读取配置文件并创建SqlSessionFactory*/
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    /*2.获取sqlSession[这是mybatis的重要API, 使用它可以操作数据库crud*/
    SqlSession sqlSession = sqlSessionFactory.openSession();
    /*3.查询第一页的数据,每页显示2条*/
    PageHelper.startPage(1,2);
    /*4.由Mybatis框架创建UserDao的实现类对象,我们称为代理对象*/
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    /*5.创建查询条件并调用接口的条件查询方法*/
    List<User> users = userDao.findAll();
    /*6.释放资源*/
    sqlSession.close();
    //测试查询结果
    PageInfo<User> pi = new PageInfo<>(users);
    System.out.println("总页数:"+pi.getPages());
    System.out.println("总记录数:"+pi.getTotal());
    System.out.println("每页显示条数:"+pi.getPageSize());
    System.out.println("当前第:"+pi.getPageNum()+"页");
}

查看结果

总页数:3
总记录数:5
每页显示条数:2
当前第:1页

分页的业务层代码

接口

package cn.oldlu.service;
import cn.oldlu.domain.User;
import com.github.pagehelper.PageInfo;
public interface UserService {
    /**
     * 分页的业务层代码
     * @param pageNum 第几页
     * @param pageSize 每页显示的记录数
     * @return 分页相关的所有的数据,都封装到了PageInfo,PageInfo中有什么数据,不需要太过关注
     * @throws Exception
     */
    PageInfo<User> pageQuery(Integer pageNum, Integer pageSize)throws Exception;
}
package cn.oldlu.service.impl;
import cn.oldlu.dao.UserDao;
import cn.oldlu.domain.User;
import cn.oldlu.service.UserService;
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.SqlSessionFactoryBuilder;
import java.util.List;
public class UserServiceImpl implements UserService {
    @Override
    public PageInfo<User> pageQuery(Integer pageNum, Integer pageSize)throws Exception {
        SqlSession sqlSession = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")).openSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        //分页的代码
        //1.设置页码和每页显示的数据
        PageHelper.startPage(pageNum,pageSize);
        //2.调用查询所有的方法
        List<User> list = userDao.findAll();
        //3.把查询到的结果封装到PageInfo对象
        PageInfo<User> pageInfo = new PageInfo<>(list);
        sqlSession.close();
        return pageInfo;
    }
}
目录
相关文章
|
开发工具 Docker 容器
Docker设置国内镜像源
Docker设置国内镜像源
19208 1
Java 如何根据域名查询对应的ip地址
Java 如何根据域名查询对应的ip地址
1027 3
com.github.pagehelper.PageInfo分页插件的12种用法
com.github.pagehelper.PageInfo分页插件的12种用法
800 0
|
SQL 搜索推荐 Java
MyBatis分页插件PageHelper的使用及MyBatis的特殊符号---详细介绍
MyBatis分页插件PageHelper的使用及MyBatis的特殊符号---详细介绍
348 0
|
10月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2579 1
|
4月前
|
机器学习/深度学习 人工智能 JSON
AI应用工程师面试问题清单
本内容涵盖AI与大语言模型(LLM)基础原理、Prompt工程设计及实战项目经验。详解LLM预测机制、Transformer架构、Embedding应用,介绍Prompt优化策略如Zero-shot、Few-shot、RAG技术,并结合实际项目展示AI应用全流程开发与落地能力。
1132 4
|
6月前
|
缓存 JSON 前端开发
第07课:Spring Boot集成Thymeleaf模板引擎
第07课:Spring Boot集成Thymeleaf模板引擎
636 0
第07课:Spring Boot集成Thymeleaf模板引擎
|
10月前
|
Java Spring
SpringBoot自动配置原理
本文深入解析了SpringBoot的核心功能——自动配置,重点探讨了`org.springframework.boot.autoconfigure`及相关注解的工作机制。通过分析`@SpringBootApplication`、`@EnableAutoConfiguration`等注解,揭示了SpringBoot如何基于类路径和条件自动装配Bean
532 8
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
31900 0
|
Oracle 关系型数据库 Windows
如何彻底卸载 IDEA,将IDEA完全删除
本文提供了一个详细的教程,指导用户如何彻底卸载 IntelliJ IDEA,包括使用Uninstall.exe程序和通过注册表删除残留项的步骤。
9296 3
如何彻底卸载 IDEA,将IDEA完全删除