您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Mybatis分页插件-PageHelper
1.Mybatis分页插件-PageHelper说明如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。点击提交BUG2.版本说明2.1.最新版本为3.4.2PageInfo中的judgePageBoudary方法修改:isLastPage=pageNum==pages&&pageNum!=1;//改为isLastPage=pageNum==pages;2.2.版本3.4.1重大bug修复,SqlParser解析sql失败的时候返回了不带count(*)的sql,导致查询失败。产生原因,由于SqlParser在系统中出现的位置修改后,导致这里出现错误。强烈推荐各位更新到最新版本。2.3.版本3.4.0增加了对@SelectProvider注解方法的支持,不使用这种方式的不影响对基本逻辑进行修改,减少反射调用和获取BoundSql次数对支持的数据库全部通过完整测试虽然变化大,但是影响范围小,不特殊通知各位了。3.使用方法分页插件项目中的正式代码一共有个5个Java文件,这5个文件的说明如下:PageE[必须]:分页参数类,该类继承ArrayList,虽然分页查询返回的结果实际类型是PageE,但是可以完全不出现所有的代码中,可以直接当成List使用。返回值不建议使用Page,建议仍然用List。如果需要用到分页信息,使用下面的PageInfo类对List进行包装即可。PageHelper[必须]:分页插件拦截器类,对Mybatis的拦截在这个类中实现。PageInfo[可选]:PageE的包装类,包含了全面的分页属性信息。SqlParser[可选]:提供高效的count查询sql。主要是智能替换原sql语句为count(*),去除不带参数的orderby语句。需要jsqlparser-0.9.1.jar支持。SqlUtil[必须]:分页插件工具类,分页插件逻辑类,分页插件的主要实现方法都在这个类中。3.1.引入分页插件引入分页插件一共有下面3种方式,推荐使用引入分页代码的方式,这种方式易于控制,并且可以根据自己需求进行修改。3.1.1.引入分页代码将本插件中的com.github.pagehelper包(点击进入gitosc包|点击进入github包)下面的三个类Page,PageHelper和SqlUtil放到项目中,如果需要使用PageInfo(强大的分页包装类),也可以放到项目中。如果想使用更高效的count查询,你也可以将SqlParser放到SqlUtil相同的包下,使用SqlParser时必须使用jsqlparser-0.9.1.jar。3.1.2.引入Jar包如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的jar即可下载)由于使用了sql解析工具,你还需要下载这个文件(这个文件完全独立,不依赖其他):SqlParser.jar:=com/github/jsqlparser/jsqlparser/0.9.1/jsqlparser-0.9.1.jarSqlParser-github地址:使用maven添加如下依赖:dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper/artifactIdversion3.4.2/version/dependencydependencygroupIdcom.github.jsqlparser/groupIdartifactIdjsqlparser/artifactIdversion0.9.1/version/dependency3.2.在Mybatis配置xml中配置拦截器插件:!--plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,databaseIdProvider?,mappers?--plugins!--com.github.pagehelper为PageHelper类所在包名--plugininterceptor=com.github.pagehelper.PageHelperpropertyname=dialectvalue=mysql/!--该参数默认为false--!--设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用--!--和startPage中的pageNum效果一样--propertyname=offsetAsPageNumvalue=true/!--该参数默认为false--!--设置为true时,使用RowBounds分页会进行count查询--propertyname=rowBoundsWithCountvalue=true/!--设置为true时,如果pageSize=0或者RowBounds.limit=0就会查询出全部的结果--!--(相当于没有执行分页查询,但是返回结果仍然是Page类型)--propertyname=pageSizeZerovalue=true/!--3.3.0版本可用-分页参数合理化,默认false禁用--!--启用合理化时,如果pageNum1会查询第一页,如果pageNumpages会查询最后一页--!--禁用合理化时,如果pageNum1或pageNumpages会返回空数据--propertyname=reasonablevalue=true//plugin/plugins这里的com.github.pagehelper.PageHelper使用完整的类路径。其他五个参数说明:1.增加dialect属性,使用时必须指定该属性,可选值为oracle,mysql,mariadb,sqlite,hsqldb,postgresql,没有默认值,必须指定该属性。2.增加offsetAsPageNum属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置为true时,使用RowBounds分页时,会将offset参数当成pageNum使用,可以用页码和页面大小两个参数进行分页。3.增加rowBoundsWithCount属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置为true时,使用RowBounds分页会进行count查询。4.增加pageSizeZero属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置为true时,如果pageSize=0或者RowBounds.limit=0就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是Page类型)。5.增加reasonable属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。具体作用请看上面配置文件中的注释内容。3.2.1.如何选择配置这些参数单独看每个参数的说明可能是一件让人不爽的事情,这里列举一些可能会用到某些参数的情况。首先dialect属性是必须的,不需要解释。其他的参数一般情况下我们都不必去管,如果想了解何时使用合适,你可以参考以下场景:3.2.1.1.场景一如果你仍然在用类似ibatis式的命名空间调用方式,你也许会用到rowBoundsWithCount,分页插件对RowBounds支持和Mybatis默认的方式是一致,默认情况下不会进行count查询,如果你想在分页查询时进行count查询,以及使用更强大的PageInfo类,你需要设置该参数为true。3.2.1.2.场景二如果你仍然在用类似ibatis式的命名空间调用方式,你觉得RowBounds中的两个参数offset,limit不如pageNum,pageSize容易理解,你可以使用offsetAsPageNum参数,将该参数设置为true后,offset会当成pageNum使用,limit和pageSize含义相同。3.2.1.3.场景三如果觉得某个地方使用分页后,你仍然想通过控制参数查询全部的结果,你可以配置pageSizeZero为true,配置后,如可以通过设置pageSize=0或者RowBounds.limit=0就会查询出全部的结果。3.2.1.4.场景四如果你分页插件使用于类似分页查看列表式的数据,如新闻列表,软件列表,你希望用户输入的页数不在合法范围(第一页到最后一页之外)时能够正确的响应到正确的结果页面,那么你可以配置reasonable为true,这时如果pageNum1会查询第一页,如果pageNum总页数会查询最后一页。3.3.Spring配置方法首先需要在Spring中配置org.mybatis.spring.SqlSessionFactoryBean。然后配置配置Mybatis的具体配置有两种方式,一种是用mybatis默认的xml配置,另一种就是完全使用spring的属性配置方式。3.3.1.mybatis默认的xml配置配置configLocation属性指向上面的mybatis-config.xml文件。有关分页插件的配置都在mybatis-config.xml,具体配置内容参考上面的mybatis-config.xml。3.3.2.使用spring的属性配置方式使用spring的属性配置方式,可以使用plugins属性像下面这样配置:beanid=sqlSessionFactoryclass=org.mybatis.spring.SqlSessionFactoryBeanpropertyname=dataSourceref=dataSource/propertyname=mapperLocationsarrayvalueclasspath:mapper/*.xml/value/array/propertypropertyname=typeAliasesPackagevalue=com.isea533.ssm.model/propertyname=pluginsarraybeanclass=com.github.pagehelper.PageHelperpropertyname=propertiesvaluedialect=hsqldbreasonable=true/value/property/bean/array/property/bean属性配置按照上面的方式配置,每个配置独立一行即可。3.4.如何在代码中使用阅读前后请注意看重要提示首先该分页插件支持以下两种调用方式://第一种,RowBounds方式的调用ListCountryl
本文标题:Mybatis分页插件-PageHelper
链接地址:https://www.777doc.com/doc-2889294 .html