分页插件PageHelper

来源:互联网 发布:js网速计算ms 编辑:程序博客网 时间:2024/06/05 11:19

导读

PageHelper是Mybatis的分页插件,支持多数据库、多数据源。PageHelper的使用方式有很多,这里只介绍我认为较为简单方便的一部分,完整版可以去Mybatis-PageHelper查看作者的原版文档。

附:

(1)PageHelper-Jar包下载

(2)Maven导入pom.xml

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

1.配置拦截器

在mybatis-config.xml中配置

<!--     plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:    properties?, settings?,     typeAliases?, typeHandlers?,     objectFactory?,objectWrapperFactory?,     plugins?,     environments?, databaseIdProvider?, mappers?--><plugins>    <plugin interceptor="com.github.pagehelper.PageInterceptor">        <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->        <property name="param" value="value"/>    </plugin></plugins>

2.配置参数(常用,不完整)

helperDialect:用来指定数据库,例如oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby。可以不配置,插件会自动检测数据库的类型。

autoRuntimeDialect:设置为true时,多数据源会自动选择合适的分页方言。默认false

closeConn:默认值为 true。当使用运行时动态数据源或没有设置 helperDialect 属性自动获取数据库类型时,会自动获取一个数据库连接, 通过该属性来设置是否关闭获取的这个连接,默认true关闭,设置为 false 后,不会关闭获取的连接,这个参数的设置要根据自己选择的数据源来决定。

reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。

params:用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero

supportMethodsArguments:默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。

3.使用方法

(1)第一种,Mapper接口方式的调用,推荐这种使用方式。

//1是当前页数,10是页面记录数(第1页,10条数据)PageHelper.startPage(1, 10);//紧跟着startPage的第一个select将会被分页List<Country> list = countryMapper.selectIf(1);

(2)第二种,配置了supportMethodsArguments=true和params

mybatis-config.xml

<property name="supportMethodsArguments" value="true"/>            <property name="params" value="pageNum=pageNum;pageSize=pageSize;"/>

直接将分页信息写在dao层接口中

public interface countryMapper {    List<Country> selectByPageNumSize(UserDTO user,int pageNum, int pageSize);}

调用时检测到分页信息,就会自动调用分页

List<Country> list = countryMapper.selectByPageNumSize(user, 1, 10);}

(3)第三种,将分页信息写在数据传输对象(DTO)中
如果 pageNum 和 pageSize 存在于 User 对象中,只要参数有值,也会被分页

public class User {    //下面两个参数名和 params 配置的名字一致    private Integer pageNum;    private Integer pageSize;}

4.得到分页信息

//1是当前页数,10是页面记录数(第1页,10条数据)PageHelper.startPage(1, 10);//紧跟着startPage的第一个select将会被分页List<Country> list = countryMapper.selectIf(1);//PageInfo中存放了分页的所有信息PageInfo<Country> page = new PageInfo<Country>(list);
2 0
原创粉丝点击