分页插件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);
- MyBatis分页插件PageHelper
- mybatis分页插件pagehelper
- Mybaties PageHelper分页插件
- Mybatis分页插件-pagehelper
- Mybatis分页插件 - PageHelper
- Mybatis分页插件PageHelper
- PageHelper分页插件使用
- 分页插件PageHelper
- Mybatis分页插件PageHelper
- PageHelper分页插件使用
- 分页插件PageHelper
- MyBatis分页插件PageHelper
- mybatis插件分页PageHelper
- Mybatis分页插件PageHelper
- 分页插件PageHelper使用方法
- 分页插件pageHelper
- 分页插件PageHelper
- Java分页插件--PageHelper
- 文章标题
- c++中三种参数引用方式
- Ubuntu下解决adb devices:???????????? no permissions的方法
- vc++加载透明png图片方法——GDI+和CImage两种
- opencv 1.0 显示一张图片
- 分页插件PageHelper
- 【Spring Boot】定时任务实现
- 你们知道工控资料窝吗
- 软件版本-管理-知识
- Hessian实例
- 【DragonBoard】刷Debian系统
- 剑指offer:合并两个排序的链表
- Python进阶(八)-编写带参数decorator
- 一直在路上