MyBatis 分页插件 PageHelper

-
MyBatis 分页插件 PageHelper

在使用PageHelper分页插件时要先添加PageHelper依赖

         <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>

PageHelper类调用父类的startPage()方法并传参,获取Page对象。可以通过此对象获得总记录数。
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;

PageHelper分页插件具体使用如下:

@Service
public class SysUserServiceImpl implements SysUserService {
    @Autowired
    private SysUserDao sysUserDao;

    @Override
    public PageObject<SysUser> findPageObjects(String username, Integer pageCurrent) {
        int pageSize = 5;
        Page<Object> page = PageHelper.startPage(pageCurrent, pageSize);
        List<SysUser>records=sysUserDao.findPageObjects(username);
        long rowCount= page.getTotal();
        return new PageObject<>((int)rowCount,records,pageCurrent,pageSize);

    }
}
问题分析:

在springboot项目中引入

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

发现分页没生效

解决办法:发现SpringBoot项目依赖的分页插件和Spring项目有所不同,需要spring-boot-starter下的包才可以。

PageHelper分页原理:底层基于mybatis拦截器做了具体实现。
在我们访问数据库的时候,在MyBatis中用的SqlSession会话对象,它通过发送sql到服务器端,来进行会话。当发送的时候,被拦截器拦截了,拦截的对象是interceptor,实际上PageHelper就是实现了MyBatis中拦截的对象是interceptor这个接口。然后把拦截到的sql语句做了修改。

缺点:和我们自己写limit分页查询相比,性能变低了。因为要先加一个拦截器,然后还要做sql语句的修改

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

gitwindowsintellij-ideajava后端

扩展阅读

加个好友,技术交流

1628738909466805.jpg