SpringBoot Mybatis 分页插件PageHelper

本文介绍如何在MyBatis中配置PageHelper插件实现分页功能,包括Maven依赖添加、Spring配置Bean、SqlSessionFactory配置及PageInfo封装返回等步骤。

添加maven配置:

    <!-- 分布插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>4.1.6</version>
        </dependency>

添加Bean:

//配置mybatis的分页插件pageHelper
    @Bean
    public PageHelper pageHelper(){
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        //设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用
        properties.setProperty("offsetAsPageNum","true");
        //设置为true时,使用RowBounds分页会进行count查询
        properties.setProperty("rowBoundsWithCount","true");
        //设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果
        //properties.setProperty("pageSizeZero","true");
        //禁用合理化,启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页
        properties.setProperty("reasonable","false");
        //配置mysql数据库的方言
        properties.setProperty("dialect","mysql");    //配置mysql数据库的方言
        pageHelper.setProperties(properties);
        return pageHelper;
    }

SqlSessionFactory:

    @Bean
    public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource,PageHelper pageHelper) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        Resource[] mappers = (new PathMatchingResourcePatternResolver())
                .getResources("classpath*:mybatis_mapper/*Mapper.xml");
        sessionFactory.setMapperLocations(mappers);
        sessionFactory.setPlugins(new Interceptor[]{pageHelper});
        return sessionFactory.getObject();
    }

应用:

    public PageInfo<DataDict> selectListByParentKey(String parentKey){
        PageHelper.startPage(2,3);
        List<DataDict> list=mapper.selectListByParentKey(parentKey);
        PageInfo<DataDict> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

封装返回的PageInfo

public class PageResult {

    private ModelMapper modelMapper=SpringUtils.getBean(ModelMapper.class);

    private PageInfo pageInfo;

    private Class aClass;

    public PageResult(PageInfo _pageInfo ){
        this.pageInfo=_pageInfo;
    }

    /**
     *
     * @param _pageInfo  pageHelper的实例
     * @param _aClass list输出类型,如果aClass不为空,就将list转换为aClass类型,反之则不进行转换
     */
    public PageResult(PageInfo _pageInfo,Class _aClass){
      this.pageInfo=_pageInfo;
      this.aClass=_aClass;
    }

    private Integer pageIndex;

    private Integer pageSize;

    private Long totalCount;

    private Integer totalPages;

    private List list;

    public Integer getPageIndex() {
        return pageInfo.getPageNum();
    }

    public Integer getPageSize() {
        return pageInfo.getPageSize();
    }

    public Long getTotalCount() {
        return pageInfo.getTotal();
    }

    public Integer getTotalPages(){
        return pageInfo.getPages();
    }

    public List getList() {
        List list= pageInfo.getList();
        if(null!=aClass) {
            List list2 = new ArrayList();
            list.forEach(x -> {
                list2.add(modelMapper.map(x, aClass));
            });
            return list2;
        }else{
            return list;
        }
    }
}

调用:

        PageHelper.startPage(request.getPageIndex(),request.getPageSize());
        List<DataDict> list=dataDictBizFacade.selectListByCondition(request.getDictKey(),request.getDictDesc(),request.getParentKey());
        PageResult result=new PageResult(new PageInfo<>(list),DataDictResponse.class);
        response.setData(result);

 

https://www.ciphermagic.cn/mybatis-page-2.html#Spring%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6

https://www.cnblogs.com/1315925303zxz/p/7364552.html

http://www.imooc.com/article/15451

https://blog.youkuaiyun.com/liangwenmail/article/details/77864267

https://github.com/pagehelper/Mybatis-PageHelper/issues/166

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值