当前位置: 首页 > news >正文

SpringBoot Mybatis 分页插件PageHelper

添加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.csdn.net/liangwenmail/article/details/77864267

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

相关文章:

  • 用北哥三个火枪手(yii2+houjs+yii2-wx)实现微信礼物打赏功能 --- 上部
  • 创建字符串的方法
  • Unity 灯光探针用法教程
  • 深度学习入门和学习书籍
  • Python总纲路线
  • MySQL 支持的数据类型
  • 展晓凯:“零经验”的我与唱吧从零到四亿
  • Yaml文件语法及读写小结
  • Zabbix 深度实践
  • Mysql常用命令行大全
  • bootstrap-table教程演示
  • 解析私有云服务器给企业带来的六大优势
  • 手机验证码登录
  • 开源方案搭建可离线的精美矢量切片地图服务-5.Mapbox离线项目实现
  • (搬运以学习)flask 上下文的实现
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • iOS | NSProxy
  • JavaScript 基础知识 - 入门篇(一)
  • Java程序员幽默爆笑锦集
  • js学习笔记
  • laravel5.5 视图共享数据
  • Node项目之评分系统(二)- 数据库设计
  • scrapy学习之路4(itemloder的使用)
  • SpriteKit 技巧之添加背景图片
  • SQLServer之索引简介
  • Vim Clutch | 面向脚踏板编程……
  • Vue学习第二天
  • 码农张的Bug人生 - 初来乍到
  • 浅谈web中前端模板引擎的使用
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 系统认识JavaScript正则表达式
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 正则表达式-基础知识Review
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​2020 年大前端技术趋势解读
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​决定德拉瓦州地区版图的关键历史事件
  • #Lua:Lua调用C++生成的DLL库
  • #QT(一种朴素的计算器实现方法)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (五)网络优化与超参数选择--九五小庞
  • (转)h264中avc和flv数据的解析
  • (转)负载均衡,回话保持,cookie
  • *p++,*(p++),*++p,(*p)++区别?
  • .net core使用ef 6
  • .NET NPOI导出Excel详解
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET单元测试
  • .NET构架之我见
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)