PageHelper--Mybatis分页插件(ssm框架下的使用)

1.导入PageHelper依赖

<!-- MyBatis 分页插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.0.0</version>
</dependency>    

 

2.配置PageHelper插件

注意:om.github.pagehelper.PageHelper这个接口,自4.0.0版本以后就不再使用了,转而实现这个接口:org.apache.ibatis.plugin.Interceptor。由于我使用的是4.0.0版本,所以还是用的PageHelper。

方式一:在mybatis的主配置文件中配置PageHelper插件

<?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">
            <property name="dialect" value="mysql"/>
            <property name="offsetAsPageNum" value="true"/>
            <property name="rowBoundsWithCount" value="true"/>
            <property name="pageSizeZero" value="true"/>
            <property name="reasonable" value="true"/>
            <property name="params" value="pageNum=start;pageSize=limit;"/>
            <property name="supportMethodsArguments" value="true"/>
            <property name="returnPageInfo" value="check"/>
        </plugin>
    </plugins>
</configuration>

 属性说明:

  dialect(常用):指定当前使用的数据库 。pagehelper版本4.0.0以后可以不设置此属性。

  offsetAsPageNum:设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用,默认为false。

  rowBoundsWithCount:设置为true时,使用RowBounds分页会进行count查询,默认为false。

  pageSizeZero:设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是Page类型)。

  reasonable(常用):分页参数合理化,设置为true时,如果pageNum<1会查询第一页,如果pageNum>最大页数时会查询最后一页;禁用合理化时,如果pageNum<1或pageNum>最大页数时会返回空数据。默认为false禁用(3.3.0之后版本可用)。 

  params:增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值。可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值。不理解该含义的前提下,不要随便复制该配置 (3.5.0版本可用,为了支持startPage(Object params)方法)      

  supportMethodsArguments:支持通过Mapper接口参数来传递分页参数。

  returnPageInfo:always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page。

 

记得在spring的配置文件的sqlSessionFactory中指定mybatis全局配置文件位置。

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--指定mybatis全局配置文件位置-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!--指定mapper.xml配置文件路径-->
        <property name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml"/>
        <!--装配数据源-->
        <property name="dataSource" ref="dataSource"/>
</bean>

 

 

方式二:直接在spring主配置文件中配置PageHelper插件(没有mybatis的主配置文件使用此方式)

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--指定mybatis全局配置文件位置-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!--指定mapper.xml配置文件路径-->
        <property name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml"/>
        <!--装配数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!--配置插件-->
        <property name="plugins">
            <array>
                <!--配置PageHelper插件-->
                <bean class="com.github.pagehelper.PageHelper">
                    <property name="properties">
                        <props>
                            <!--配置数据库方言,告诉 PageHelper当前使用的数据库-->
                            <prop key="dialect">mysql</prop>
                            <!--配置页码的合理化修正,在1~总页数之间修正页码-->
                            <!--合理化修正-->
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

 

 

 

3.使用

在执行查询之前调用PageHelper的静态方法:PageHelper.startPage(pageNum,pageSize)即可,pagehelper自动对PageHelper.startPage 方法下的第一个sql 查询进行分页

此方法两个参数:

pageNum:当前页码

pageSize:每页显示的条数

代码举例:

    @Test
    public void test2(){
        PageHelper.startPage(2,10);
        List<Admin> list = adminMapper.selectAdminByKeyword("");
        for (Admin admin : list) {
            System.out.println(admin);
        }
    }

 

输出:

 

posted @ 2020-07-28 19:11  白熊啊  阅读(524)  评论(1编辑  收藏  举报