Mybatis入门(七)SpringBoot整合Mybatis 分页插件PageHelper


一、PageHelper

PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如 mysql、oracle、mariaDB、DB2等。
PageHelper官网

二、PageHelper分页封装类

1. Page

public class Page<E> extends ArrayList<E> implements Closeable {
    private static final long serialVersionUID = 1L;
    private int pageNum;
    private int pageSize;
    private long startRow;
    private long endRow;
    private long total;
    private int pages;
    private boolean count;
    private Boolean reasonable;
    private Boolean pageSizeZero;
    private String countColumn;
    private String orderBy;
    private boolean orderByOnly;
    private BoundSqlInterceptor boundSqlInterceptor;
    private transient Chain chain;
    private String dialectClass;
}

2. PageInfo

public class PageInfo<T> extends PageSerializable<T> {
    public static final int DEFAULT_NAVIGATE_PAGES = 8;
    public static final PageInfo EMPTY = new PageInfo(Collections.emptyList(), 0);
    // 当前页
    private int pageNum;
    // 每页的数量
    private int pageSize;
    // 当前页实际的数量
    private int size;
    // 当前页开始的条数(数据库中总数的第几条)
    private long startRow;
    // 当前页最后的条数(数据库中总数的第几条)
    private long endRow;
	// 总页数
    private int pages;
    // 上一页
    private int prePage;
    // 下一页
    private int nextPage;
    // 是否是第一页
    private boolean isFirstPage;
    // 是否是最后一页
    private boolean isLastPage;
    // 是否有上一页
    private boolean hasPreviousPage;
    // 是否有下一页
    private boolean hasNextPage;
    // 导航页码个数
    private int navigatePages;
    // 导航页码数
    private int[] navigatepageNums;
    // 导航页码的第一页页码数
    private int navigateFirstPage;
    // 导航页码的最后一页页码数
    private int navigateLastPage;
}

三、PageHelper使用方法

  • 第一种:

    @Test
    void testGetAllUsersByLimit() {
        // 开启分页查询,制定分页规则
        PageHelper.startPage(1, 10);
        // 查询语句,分页插件会对SQL进行拦截处理
        List<User> users = userMapper.getAllUsers();
        System.out.println(users);
    }
    

    输出结果:
    在这里插入图片描述

  • 第二种:

    @Test
    void testGetAllUsersByLimit() {
        // 开启分页查询,制定分页规则
        PageHelper.startPage(1, 10);
        // 查询语句,分页插件会对SQL进行拦截处理
        List<User> users = userMapper.getAllUsers();
        PageInfo<User> pageInfo = new PageInfo<>(users);
        System.out.println(pageInfo);
    }
    

    输出结果:
    在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里是使用Mybatis件完成Spring Boot的分页件的方法: 1. 首先,在pom.xml文件中添加Mybatis分页件的依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.13</version> </dependency> ``` 2. 接下来,在application.properties文件中添加Mybatis分页件的配置: ```properties # 开启分页pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql ``` 3. 在Mapper.xml中编写SQL语句,并添加分页件的配置: ```xml <!-- 查询用户列表 --> <select id="selectUsers" resultMap="userMap"> select * from user <where> <if test="username != null and username != ''"> and username like concat('%',#{username},'%') </if> <if test="email != null and email != ''"> and email like concat('%',#{email},'%') </if> </where> <if test="sort != null and sort != ''"> order by ${sort} </if> limit #{pageStart},#{pageSize} </select> <!-- 分页件配置 --> <select id="selectUsers" resultMap="userMap"> select count(*) from user <where> <if test="username != null and username != ''"> and username like concat('%',#{username},'%') </if> <if test="email != null and email != ''"> and email like concat('%',#{email},'%') </if> </where> </select> ``` 4. 最后,在Service中调用Mapper方法进行分页查询: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public Page<User> selectUsers(String username, String email, String sort, int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List<User> users = userMapper.selectUsers(username, email, sort); PageInfo<User> pageInfo = new PageInfo<>(users); return PageConverter.convert(pageInfo); } } ``` 这样,就可以使用Mybatis件完成Spring Boot的分页件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值