PageHelper使用

本文介绍Mybatis分页插件PageHelper的使用方法,包括配置步骤、支持的数据库类型及常见代码示例。PageHelper支持Oracle、Mysql等六种数据库,通过简单的配置即可实现SQL语句的分页功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PageHelper

Mybatis分页插件
支持Oracle、Mysql、MariaDB、SQLite、Hsqldb、PostgreSQL六种数据库
不支持SQL Server,Java开发很少使用SQL数据库

添加jar包

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.0.0</version>
</dependency>

配置拦截器

在Mybatis配置文件中,配置拦截器插件

分页原理
在Mybatis执行SQL语句之前,拦截获取SQL
对其进行处理,添加limit等语句
SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 配置分页插件 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!-- 配置数据库的方言 -->
            <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->        
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>
</configuration>

常用代码

设置分页信息

//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
//紧跟着的第一个select方法会被分页
List<Country> list = countryMapper.selectIf(1);

取分页信息,方式一

//分页后,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>,
Page<Country> listCountry = (Page<Country>)list;
listCountry.getTotal();

取分页信息,方式二

//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
List<Country> list = countryMapper.selectAll();
//用PageInfo对结果进行包装
PageInfo page = new PageInfo(list);

PageInfo

//测试PageInfo全部属性
//PageInfo包含了非常全面的分页属性
assertEquals(1, page.getPageNum());
assertEquals(10, page.getPageSize());
assertEquals(1, page.getStartRow());
assertEquals(10, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(19, page.getPages());
assertEquals(1, page.getFirstPage());
assertEquals(8, page.getLastPage());
assertEquals(true, page.isFirstPage());
assertEquals(false, page.isLastPage());
assertEquals(false, page.isHasPreviousPage());
assertEquals(true, page.isHasNextPage());

测试

public class TestPageHelper {

    @Test
    public void testPageHelper() throws Exception {
        // 1.在mybatis的配置文件中配置分页插件
        // 2.在执行查询之前配置分页条件。使用PageHelper的静态方法
        PageHelper.startPage(1, 10);
        // 3.执行查询
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
                "classpath:spring/applicationContext-dao.xml");
        TbItemMapper itemMapper = applicationContext.getBean(TbItemMapper.class);
        // 创建Example对象
        TbItemExample example = new TbItemExample();
        // Criteria criteria = example.createCriteria();
        List<TbItem> list = itemMapper.selectByExample(example);
        // 4.取分页信息。使用PageInfo对象取。
        PageInfo<TbItem> pageInfo = new PageInfo<>(list);
        System.out.println("总记录数:" + pageInfo.getTotal());
        System.out.println("总记页数:" + pageInfo.getPages());
        System.out.println("返回的记录数:" + list.size());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值