zoukankan      html  css  js  c++  java
  • 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);
            }
        }

    输出:

  • 相关阅读:
    从xml中改变checkBox大小和形状
    Android 数字签名学习笔记
    Android 说说钟表控件
    Android中选项卡TabHost的基本使用
    Android 实现图片反转
    Android openfire插件开发
    最大递增子序列——[Usaco2006 Oct]Hungry Cows饥饿的奶牛
    矩阵二分乘法(可做模板)——hdu1575
    树形递归——1621: [Usaco2008 Open]Roads Around The Farm
    规律题——Codeforces Beta Round #11 B
  • 原文地址:https://www.cnblogs.com/bear7/p/13393158.html
Copyright © 2011-2022 走看看