MyBatis分页插件-PageHelper的配置与应用

来源:互联网 发布:centos 防止arp 编辑:程序博客网 时间:2024/06/05 12:06

  • MyBatis分页插件PageHelper的配置与应用
    • 一引入PageHelper依赖
    • 二配置拦截器插件
    • 三使用分页插件
      • mapper接口 简单易懂
      • mapperxml 框架已做好处理
        • Service类 服务MV C
        • JUnit 测试类
    • 总结

在我看来,这个分页插件为mybatis量身定制。完美融合框架,一句多余的代码也不需要我们写.我们

MyBatis分页插件-PageHelper的配置与应用

一.引入PageHelper依赖

pom.xml 引入依赖:

<!-- pagehelper :分页插件 --><dependency>    <groupId>com.github.pagehelper</groupId>    <artifactId>pagehelper</artifactId>    <version>5.1.2</version></dependency><!-- pagehelper的依赖包:jsqlparser --><dependency>    <groupId>com.github.jsqlparser</groupId>    <artifactId>jsqlparser</artifactId>    <version>0.9.5</version></dependency>

*如果不用maven需要自行下载两个jar包:

  1. http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
  2. http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.5/

二.配置拦截器插件

spring-mybatis.xml 集成配置:

<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    <property name="dataSource" ref="dataSource" />    <!-- 自动扫描mapping.xml文件 -->    <property name="mapperLocations" value="classpath:site/gaoyisheng/mapping/*.xml"></property>    <!-- 分页插件 pagehelper -->    <property name="plugins">        <array>            <bean class="com.github.pagehelper.PageInterceptor">                <property name="properties">                    <!--使用下面的方式配置参数,一行配置一个 -->                    <value>                          helperDialect=postgresql                          reasonable=true                          supportMethodsArguments=true                          params=count=countSql                          autoRuntimeDialect=true                    </value>                </property>            </bean>        </array>    </property></bean>

简单介绍其中参数,具体参数详见: 分页插件参数介绍

  • helperDialect:如果不配置,pagehelper会自动获取连接,检测数据库。也可以自己声明数据库的方言,比如此处用的postgresql。

  • reasonable:配置pageNum参数合理化,比如第0页,和超过最后一页,则返会第一页和最后一页。而不是意想不到的数据。

  • supportMethodsArguments:”支持通过 Mapper 接口参数来传递分页参数”,通过interface传给mapper.xml,默认false不支持.代码实例可见 例子:查询测试代码 , mapper.xml代码,查看详细的写法.展示了两种不同传值方法,

  • params=count=countSql 为了支持PageHelper.startPage(Object params)方法,默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero .

  • autoRuntimeDialect:运行时多数据源(数据库)自动识别,默认值false。true则允许自动识别对应方言的分页.

至此,我们已经配好一个简单可用的分页插件了.

三.使用分页插件

这里介绍其中一种方法,简单易懂.

1.mapper接口 简单易懂

最简单的使用方法是,通过mapper接口,传递分页参数:

public interface XXXmapper{    /**     * .     * TODO 按状态查询,+分页参数:重载     * @param status     * @param pageNum     * @param pageSize     * @return     */    List<EnPeriodicalThesis> selectByStatus(@Param("status") String status,@Param("pageNum") int pageNum,@Param("pageSize") int pageSize);}

pageNum: 控制页数.
pageSize: 控制页面大小.

2.mapper.xml 框架已做好处理

在mapper.xml中,并不需要我们处理任何参数.{“pageNum”,”pageSize”} Mybatis框架会自动查找对应分页的数据然后返回.

<!-- 根据 认领状态 查询 --><select id="selectByStatus" resultMap="BaseResultMap">    select        <include refid="Base_Column_List" />    from en_periodical_thesis e    where e.claim_status = #{status}</select>

不管你信不信,有了框架它就是这么方便.已经可以用了.我们再写个Service类和测试类跑跑看.

3. Service类 服务MV C

    /**     * .     * TODO  通过认领状态查询,+分页参数:重载     * @param status     * @param pageNum     * @param pageSize     * @return     */    public List<EnPeriodicalThesis> selectByStatus(String claimStatus,int pageNum,int pageSize) {        return thesisDao.selectByStatus(claimStatus,pageNum,pageSize);    }

3.JUnit 测试类

@Testpublic void selectTest() {      List<EnPeriodicalThesis> enList = es.selectByStatus("未认领",1,2);    for (EnPeriodicalThesis e : enList) {        System.out.println("---" + e.toString());    }}   

查询结果:

  • 查询状态”未认领”
  • 第1页
  • 每页2条数据
DEBUG   - ==>  Preparing: SELECT count(0) FROM en_periodical_thesis e WHERE e.claim_status = ? DEBUG   - ==> Parameters: 未认领(String)DEBUG   - <==      Total: 1DEBUG   - ==>  Preparing: select id, key_id, name, all_auther_name, provenance, "subject ", volume, period, page, year, claim_status from en_periodical_thesis e where e.claim_status = ? LIMIT ? DEBUG   - ==> Parameters: 未认领(String), 2(Integer)DEBUG   - <==      Total: 2---EnPeriodicalThesis [id=1, keyId=, name=test1, allAutherName=, provenance=, subject=, volume=, period=, page=, year=, claimStatus=未认领]---EnPeriodicalThesis [id=2, keyId=, name=test2, allAutherName=, provenance=, subject=, volume=, period=, page=, year=, claimStatus=未认领]

总结:

好用,简单易上手.


参考资料:

  • https://pagehelper.github.io/

  • https://pagehelper.github.io/docs/howtouse/#1-%E5%BC%95%E5%85%A5%E5%88%86%E9%A1%B5%E6%8F%92%E4%BB%B6

源码见:

  • https://github.com/pagehelper/Mybatis-PageHelper
  • https://github.com/abel533/Mybatis-Spring

个人项目源码路径:欢迎交流指教.

  • https://github.com/timo1160139211/trans

本文链接:欢迎交流指教.

  • http://blog.csdn.net/timo1160139211/article/details/78632831
原创粉丝点击