SSM框架下使用PageHelper分页

1.一般我们使用maven管理项目,那么只需要额外导入如下pom即可:

 <!--自定义分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.1</version>
        </dependency>

2.需要在sqlSessionFactory中进行自定义拦截器的配置,

 //分页插件
    @Bean
    public PageInterceptor pageInterceptor() throws IOException {
        PageInterceptor pageInterceptor = new PageInterceptor();
        pageInterceptor.setProperties(PropertyUtil.loadProps("pageInterceptor.properties"));
        return pageInterceptor;
    }

    @Bean
    public SqlSessionFactoryBean sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();

        sqlSessionFactory.setDataSource(dataSource());
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sqlSessionFactory.setMapperLocations
                (new Resource[]{resolver.getResource("classpath:mapper/UserMapper.xml")
                        , resolver.getResource("classpath:mapper/ItemMapper.xml")
                        , resolver.getResource("classpath:mapper/OrderMapper.xml")});
 sqlSessionFactory.setPlugins(new Interceptor[]{pageInterceptor()});

        return sqlSessionFactory;
    }

3.在pageInterceptor.properties文件中可以对分页拦截器做一些配置,为了方便新手我简单贴一下自己配置:

offsetAsPageNum=true
reasonable=true
helperDialect=mysql

4.配置好后我们在mapper.xml文件中就无需像原来一样用select count(0) from TABLE_NAME,查出总记录数,再写一条带有where if 和limit a,b的语句来进行手动的分页查询,在mapper文件中我们可以直接写select * from TABLE_NAME,后面也可以加上动态查询条件,比如根据id,name,desc的模糊查询等,都可以自动的分页查询出来.
5,使用分页有多种方法,我个人觉得文档的第二种比较简单,也就是

 @Override
    public PageInfo<Item> selectSelective(Item item, String pageNum,String pageSize){
        if(pageNum==null){
            pageNum="1";
        }
        PageHelper.startPage(Integer.parseInt(pageNum),Integer.parseInt(pageSize));
        List<Item> itemList= itemMapper.selectSelective(item);
        PageInfo<Item> pageInfo = new PageInfo<>(itemList);
        return  pageInfo;
    }

也就是在你要进行分页查询时先写一条PageHelper.startPage(Integer.parseInt(pageNum),Integer.parseInt(pageSize)),传入当前页码数和每页显示的记录数,下面一定要紧跟你要查询的具体方法,两句代码一定要放在一起,否则可能会导致安全问题.
6.查询出来是一个List集合,里面包含了POJO,为了在前台获取分页的相关数据,需要返回的是一个PageInfo对象,在new PageInfo对象时将我们的List传入PageInfo对象中,这样在前台就可以通过pageInfo.list取出POJO对象集合,总之分页所需的一切属性都在pageInfo里面,读读源码就了解啦~~~这样在Controller中直接把pageinfo传给前台就可以使用了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值