Spring Boot 集成PageHelper你用对了吗?

本文详细介绍了Spring Boot集成PageHelper的步骤,并讨论了分页过程中的SQL注入防范、自定义SQL计数、分页失效场景及性能优化。针对大表分页性能问题,提出了优化SQL的方法,强调合理使用PageHelper以避免错误。
摘要由CSDN通过智能技术生成

前言

项目中数据分页是一个很常见的需求,目前大部分项目都会使用pagehelper进行分页,那么在使用的过程中是否考虑如下问题?

基本集成

引入jar包

  <dependency>
		<groupId>com.github.pagehelper</groupId>
		<artifactId>pagehelper-spring-boot-starter</artifactId>
		<version>${pagehelper.version}</version>
 </dependency>

Yml配置文件中添加相关配置

pagehelper:
    helperDialect: mysql
    reasonable: true
    supportMethodsArguments: true
    params: count=countSql

封装相关分页方法

分页参数类

 public class PageParam<T> implements Serializable
{
    private static final long serialVersionUID = -7916211163897873899L;

    private int pageNum=1;

    private int pageSize=10;
    
    //条件参数
    private T param;
    
    //排序字段
    private String orderBy;
    

    public int getPageSize()
    {
        return pageSize;
    }

    public void setPageSize(int pageSize)
    {
        this.pageSize = pageSize;
    }

    public int getPageNum()
    {
        return pageNum;
    }

    public void setPageNum(int pageNum)
    {
        this.pageNum = pageNum;
    }

    public T getParam()
    {
        return param;
    }

    public void setParam(T param)
    {
        this.param = param;
    }

    public String getOrderBy()
    {
        return orderBy;
    }

    public void setOrderBy(String orderBy)
    {
        //需要注意sql注入
        this.orderBy = orderBy;
    }
}

分页结果类

public class PagedList<T> implements Serializable
{
    private static final long serialVersionUID = -1253790062865437768L;

    private int pageNum = 1;

    private List<T> data = null;

    private int pageCount = 0;

    private int recordCount = -1;

    private int pagingType = 0;

    private int pageSize;

    private String orderBy;

    /**
     * @return the pageSize
     */
    public int getPageSize()
    {
        return pageSize;
    }

    /**
     * @param pageSize
     *            the pageSize to set
     */
    public void setPageSize(int pageSize)
    {
        if (pageSize <= 0)
        {
            return;
        }
        this.pageSize = pageSize;
    }


    /**
     * @return the pageCount
     */
    public int getPageCount()
    {
        return pageCount;
    }

    /**
     * @param pageCount
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值