Mybatis插件PageHelper PageHelper的使用 PageHelper的分页插件的使用 Mybatis实现分页功能的插件

一、PageHelper是什么

pageHelper是Mybatis框架中一个支持分页的插件,让我们的分页操作变得非常简单;它通过mybatis当中的拦截器,拦截查询请求,插入limit分页语句,最后完成分页操作。

二、pageHelper的执行原理

  • 在调用Dao的service当中设置分页参数(页码,条数),存入ThreadLocal当中,在Mybatis执行查询Sql前面拦截,从ThreadLocal当中取出分页参数修改当前执行的语句,添加分页的语句,最后执行添加分页后的Sql语句,实现分页查询。
    在这里插入图片描述

三、pageHelper的使用

1. 添加pom

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

2. 在Spring与Mybatis整合SqlSessionfactoryBean对象当中添加分页插件。

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="ds"/>
        <property name="typeAliasesPackage" value="com.atjianyi.pojo"/>
<!--    加入插件    -->
        <property name="plugins">
            <set>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                        	<!--什么数据库-->
                            <prop key="helperDialect">mysql</prop>
                            <!--可以防止码数不会溢出-->
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </set>
        </property>
    </bean>

3. 在调用dao层之前调用分页方法

  @Override
    public List<Orders> findAllOrdersByPage(int curPage,int size) throws Exception {
    
    
        //调用分页方法
        PageHelper.startPage(curPage,size);
        List<Orders> allOrders = mapper.findAllOrders();
        return allOrders;
    }

3. 使用pageInfo对象封装

PageInfo<Orders> pageInfo = new PageInfo<>(allOrders);

3. pageInfo封装的数据当中的数据

    private static final long serialVersionUID = 1L;
    //当前页
    private int pageNum;
    //每页的数量
    private int pageSize;
    //当前页的数量
    private int size;

    //由于startRow和endRow不常用,这里说个具体的用法
    //可以在页面中"显示startRow到endRow 共size条数据"

    //当前页面第一个元素在数据库中的行号
    private int startRow;
    //当前页面最后一个元素在数据库中的行号
    private int endRow;
    //总记录数
    private long total;
    //总页数
    private int pages;
    //结果集
    private List<T> list;

    //前一页
    private int prePage;
    //下一页
    private int nextPage;

    //是否为第一页
    private boolean isFirstPage = false;
    //是否为最后一页
    private boolean isLastPage = false;
    //是否有前一页
    private boolean hasPreviousPage = false;
    //是否有下一页
    private boolean hasNextPage = false;
    //导航页码数
    private int navigatePages;
    //所有导航页号
    private int[] navigatepageNums;
    //导航条上的第一页
    private int navigateFirstPage;
    //导航条上的最后一页
    private int navigateLastPage;

四、小结

这里只是记录了一下PageHelper的简单使用!当然这里面还有一些缺点,和强大之处,我们后续使用再说

猜你喜欢

转载自blog.csdn.net/Janyi_/article/details/113947817