阿里巴巴吧国际网站怎么做,网站开发立项,个人站长适合做什么网站,wordpress 弹图插件首先Mybqtis可以通过SQL 的方式实现分页很简单#xff0c;只要在查询SQL 后面加上limit #{currIndex} , #{pageSize}就可以了。
本文主要介绍使用拦截器的方式实现分页。
实现原理
拦截器实现了拦截所有查询需要分页的方法#xff0c;并且利用获取到的分页相关参数统一在s…首先Mybqtis可以通过SQL 的方式实现分页很简单只要在查询SQL 后面加上limit #{currIndex} , #{pageSize}就可以了。
本文主要介绍使用拦截器的方式实现分页。
实现原理
拦截器实现了拦截所有查询需要分页的方法并且利用获取到的分页相关参数统一在sql语句后面加上limit分页的相关语句从而达到SQL 分页的目的它的好处不用多说了代码也写的很少对SQL 的侵入较少推荐使用。
步骤
添加依赖
pagehelper.version1.2.3/pagehelper.versiondependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion${pagehelper.version}/version
/dependency配置文件
在系统配置文件中加入pagehelper的配置信息
pagehelper:helper-dialect: mysqlreasonable: truesupportMethodsArguments: trueparams: countcountSql针对pagehelper的配置参数查询了一下 \1. helperDialect分页插件会自动检测当前的数据库链接自动选择合适的分页方式。 你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时可以使用下面的缩写值 oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby **特别注意**使用 SqlServer2012 数据库时需要手动指定为 sqlserver2012否则会使用 SqlServer2005 的方式进行分页。 你也可以实现 AbstractHelperDialect然后配置该属性为实现类的全限定名称即可使用自定义的实现方法。
offsetAsPageNum默认值为 false该参数对使用 RowBounds 作为分页参数时有效。 当该参数设置为 true 时会将 RowBounds 中的 offset 参数当成 pageNum 使用可以用页码和页面大小两个参数进行分页。rowBoundsWithCount默认值为false该参数对使用 RowBounds 作为分页参数时有效。 当该参数设置为true时使用 RowBounds 分页会进行 count 查询。pageSizeZero默认值为 false当该参数设置为 true 时如果 pageSize0 或者 RowBounds.limit 0 就会查询出全部的结果相当于没有执行分页查询但是返回结果仍然是 Page 类型。reasonable分页合理化参数默认值为false。当该参数设置为 true 时pageNum0 时会查询第一页 pageNumpages超过总数时会查询最后一页。默认false 时直接根据参数进行查询。params为了支持startPage(Object params)方法增加了该参数来配置参数映射用于从对象中根据属性名取值 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable不配置映射的用默认值 默认值为pageNumpageNum;pageSizepageSize;countcountSql;reasonablereasonable;pageSizeZeropageSizeZero。supportMethodsArguments支持通过 Mapper 接口参数来传递分页参数默认值false分页插件会从查询方法的参数值中自动根据上面 params 配置的字段中取值查找到合适的值时就会自动分页。 使用方法可以参考测试代码中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和 ArgumentsObjTest。autoRuntimeDialect默认值为 false。设置为 true 时允许在运行时根据多数据源自动识别对应方言的分页 不支持自动选择sqlserver2012只能使用sqlserver用法和注意事项参考下面的场景五。closeConn默认值为 true。当使用运行时动态数据源或没有设置 helperDialect 属性自动获取数据库类型时会自动获取一个数据库连接 通过该属性来设置是否关闭获取的这个连接默认true关闭设置为 false 后不会关闭获取的连接这个参数的设置要根据自己选择的数据源来决定。
重要提示
当 offsetAsPageNumfalse 的时候由于 PageNum 问题RowBounds查询的时候 reasonable 会强制为 false。使用 PageHelper.startPage 方法不受影响。 注 PageRowBounds 想要查询总数也需要配置该属性为 true。
使用
在业务查询 的时候加上
PageHelper.startPage(pageIndex, pageSize);例如
Overridepublic ListSysUserEntity query(SysUserEntity user) {// 查询第一页的两条数据PageHelper.startPage(1, 2);return sysUserDao.query(user);}测试一下返回结果 我们来看下它执行的SQL :
Preparing: SELECT count(0) FROM sys_user
Parameters: Total: 1
Preparing: SELECT * FROM sys_user LIMIT ?
Parameters: 2(Integer)Total: 2补充
使用方法
使用的时候需要仔细阅读作者的文章 pagehelper/Mybatis-PageHelper
主要是阅读使用方法以及各个场景中使用什么方法解决问题注意事项。
分页排序
PageHelper.startPage(pageIndex, pageSize, orderBy);支持返回PageInfo Overridepublic PageInfo queryByPageInfo(SysUserEntity user) {return PageHelper.startPage(1,2).doSelectPageInfo(() - sysUserDao.query(user));}使用Swagger测试返回数据
{pageNum: 1,pageSize: 2,size: 2,startRow: 1,endRow: 2,total: 4,pages: 2,list: [{id: 1,username: def,password: 123,mobile: null,email: null,createUserId: null,createDate: null},{id: 7,username: wuwii,password: 123,mobile: null,email: null,createUserId: null,createDate: null}],prePage: 0,nextPage: 2,isFirstPage: true,isLastPage: false,hasPreviousPage: false,hasNextPage: true,navigatePages: 8,navigatepageNums: [1,2],navigateFirstPage: 1,navigateLastPage: 2,firstPage: 1,lastPage: 2
}