Mybatis分页插件-PageHelper

1.PageHelper 分页插件(一)简介

简介

PageHelper是国内非常优秀的一款开源的mybatis分页插件, 它支持基本主流与常用的数据库, 例如mysql、 oracle、 mariaDB、 DB2、 SQLite、 Hsqldb等。

本项目在 github 的项目地址: https://github.com/pagehelper/Mybatis-PageHelper

本项目在 gitosc的项目地址: http://git.oschina.net/free/Mybatis_PageHelper

2.PageHelper 分页插件(二)如何使用PageHelper

  2.1 添加PageHelper依赖

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

 2.2 在applicationContext.xml spring与mybatis整合配置文件中配置

<!--4. Spring整合Mybatis关键配置,创建SqlsessionFactory工厂-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <!-- 注意其他配置 -->
    <property name="plugins">
        <array>
            <bean class="com.github.pagehelper.PageInterceptor">
                <property name="properties">
                    <!--使用下面的方式配置参数,一行配置一个 -->
                    <value>
                        helperDialect=oracle
                        reasonable=true
                    </value>
                </property>
            </bean>
        </array>
    </property>
</bean>

3.分页(一)dao层

   3.1 使用Mybatis的分页插件PageHelper, dao只需要查询全部需要的数据,后面会自动对查询语句进行分页

 @Select("select o.*,p.id pid,p.productnum,p.productname,p.cityname," +
            "p.productprice" +
            " from orders o inner join product p on o.productId = p.id")
    @Results({
            @Result(id = true,property = "id",column = "id"),
            /*2. 封装产品信息*/
            @Result(property = "product.id",column = "pid"),
            @Result(property = "product.productNum",column = "productnum"),
            @Result(property = "product.productName",column = "productname"),
            @Result(property = "product.cityName",column = "cityname"),
            @Result(property = "product.productPrice",column = "productprice")
    })
    public List<Order> findAll();

4.分页(二)service

关键点

    4.1PageInfo 封装分页参数,pagehelper提供

    4.2分页查询:PageHelper.startPage((参数1)当前页,(参数2))页面每页显示数据数量)

//接口方法 
PageInfo<Order> findByPage(int pageNum,int pageSize);

//实现类OderServiceImpl
  public PageInfo<Order> findByPage(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        List<Order> list = orderDao.findAll();
        return new PageInfo<Order>(list);
    }

测试类

    @Test
    public void test(){
        //List<Order> list = orderService.findAll();
        //List<Order> list = orderDao.find();
       PageInfo<Order> pageInfo = orderService.findByPage(1, 2);

        System.out.println(pageInfo);
    }

 由PageHelper自动生成的分页sql

SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM 
( select o.*,p.id pid,p.productnum,p.productname,p.cityname,p.productprice from orders o inner join product p on o.productId = p.id ) TMP_PAGE
 WHERE ROWNUM <= ? 

 

查询结果

PageInfo{pageNum=1, pageSize=2, size=2, startRow=1, endRow=2, total=50, pages=25, list=Page{count=true, pageNum=1, pageSize=2, startRow=0, endRow=2, total=50, pages=25, reasonable=true, pageSizeZero=false}, prePage=0, nextPage=2, isFirstPage=true, isLastPage=false, hasPreviousPage=false, hasNextPage=true, navigatePages=8, navigateFirstPage=1, navigateLastPage=8, navigatepageNums=[1, 2, 3, 4, 5, 6, 7, 8]}

总结

   PageHelper只支持Mybatis框架的使用,使用的前提是添加正确的依赖和配置文件的正确配置,

查询数据库时只需要查询需要分页的所有数据(findAll),分页的sql不需要自己写,PageHelper会

自动根据配置文件中参数的数据类型生成对应的分页sql语句,在Service中需要使用PageHelper.startPage((参数1)当前页,(参数2))方法即可,其他分页所需要的数据例如数据库表中的数据、数据总数、总页数等PageHelper会自动保存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值