PageHelper插件在ssm框架中的使用(以及一个粗心踩的坑)

简介

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

配置

首先导入依赖

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

PageHelper本身是属于mybatis的一个插件,所以在ssm,我们要在整合mybatis的配置中进行配置。

<!--配置生产SqlSession对象的工厂-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!--扫描pojo包,给包下所有pojo对象起别名-->
        <property name="typeAliasesPackage" value="com.itcc.domain"/>
        <!-- 传入PageHelper的插件 -->
        <property name="plugins">
            <array>
                <!-- 传入插件的对象 -->
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <prop key="helperDialect">oracle</prop>
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

helperDialect 属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:oracle , mysql , mariadb , sqlite , hsqldb , postgresql , db2 , sqlserver , informix , h2 , sqlserver2012 , derby

reasonable :分页合理化参数,默认值为 false 。当该参数设置为 true 时, pageNum<=0 时会查询第一页, pageNum>pages (超过总数时),会查询最后一页。默认 false 时,直接根据参数进行查询。
说道这里就不得不说我的一个失误了。在配置的时候我是从其他工程复制过来的,但是哪个工程使用的是mysql数据库,而这个是oracle,一开始没有改,后面测试时一直报错,错误是sql语句未正确结束,当时花了大概半个小时打断点找错误,可代码并没有问题,排除代码那就剩配置问题了,看了配置文件才发现了这个失误。。。此处心情比较复杂

配置完后使用就比较简单了
我们只需重点掌握一种方法 在你需要进行分页的 MyBatis 查询方法前调用PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。

    public List<Order> findAll(int pageNum,int pageSize) throws Exception {
        //pageNum为当前页码值,pageSize为当前页数量
        PageHelper.startPage(pageNum,pageSize);
        return ordersDao.findAll();
    }
 @RequestMapping("/findAll")
    public ModelAndView findAll(@RequestParam(name = "pageNum",defaultValue = "1") int pageNum,@RequestParam(name = "pageSize",defaultValue = "4") int pageSize) throws Exception{
        ModelAndView mv = new ModelAndView();
        List<Order> orderList = ordersService.findAll(pageNum, pageSize);
        //pageInfo就是一个分页bean
        PageInfo pageInfo = new PageInfo(orderList);
        mv.addObject("pageInfo",pageInfo);
        mv.setViewName("orders-page-list");
        return mv;
    }

这里pageInfo就是一个分页bean,看源码很清晰,把它放入request域中再在前端拿出来用就好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值