美文网首页
MybatisPlus 分页工具

MybatisPlus 分页工具

作者: 久伴我还是酒伴我 | 来源:发表于2020-01-17 14:15 被阅读0次

    简介

    后端开发,避免不了分页,市场上经常使用的分页工具类是GtiHub的pagehelper,这里不做赘述,今天咱们就看看Mybatis Plus 是怎么进行分页的,还是那句话,废话不多说,不说原理,不说结构,只讨论怎么使用,具体集成MybatisPlus 就不多说了,具体可以参考SpringBoot 集成MyBatis Plus 3.3.0

    Maven配置文件

        <!--mybatis plus-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.3.0</version>
            </dependency>
    

    使用方法

    MybatisPlusConfig

    package com.glj.mch.statistics.config;
    
    import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @MapperScan("com.glj.mch.statistics.*")
    public class MybatisPlusConfig {
        /**
         * 分页插件
         */
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
            // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
            // paginationInterceptor.setOverflow(false);
            // 设置最大单页限制数量,默认 500 条,-1 不受限制
            // paginationInterceptor.setLimit(500);
            // 开启 count 的 join 优化,只针对部分 left join
            paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
            return paginationInterceptor;
        }
    }
    
    

    Controller

    /**
         *
         * 功能描述: 获取权限菜单列表
         *
         * @param:
         * @return:
         * @auther: glj
         * @date: 2018/11/30 10:30
         */
        @PostMapping("/permissionList")
        @ResponseBody
        public YTPageResponse permissionList(@RequestParam("pageNum") Integer pageNum,
                                             @RequestParam("pageSize") Integer pageSize, PermissionSearchDto dto){
            log.info("获取权限菜单列表");
            YTPageResponse response;
            pageNum = Optional.ofNullable(pageNum).orElse(1);
            pageSize = Optional.ofNullable(pageSize).orElse(10);
            // 获取服务类目列表
            response = permissionService.getPermissionList(pageNum ,pageSize,dto);
            log.info("权限菜单列表查询=pdr:" + response);
    
            return response;
        }
    
    

    Service

      /**
         * 分页获取资源列表
         *
         * 指定页数 和每页显示数量 将此句话放入查询前面 IPage<MchBasePermission> page = new Page<>(pageNum, pageSize);
         *  总条数  userIPage.getTotal()
         *  当前页数 userIPage.getCurrent()
         *  当前每页显示数 userIPage.getSize()
         *
         *
         * @param pageNum
         * @param pageSize
         * @param searchDto
         * @return
         */
        @Override
        public YTPageResponse getPermissionList(Integer pageNum, Integer pageSize, PermissionSearchDto searchDto) {
            // 重要
            IPage<MchBasePermission> page = new Page<>(pageNum, pageSize);
            QueryWrapper<MchBasePermission> wrapper = new QueryWrapper<MchBasePermission>()
                    .eq(StringUtils.isNotBlank(searchDto.getPermissionName()),MchBasePermission.NAME,searchDto.getPermissionName())
                    .eq(StringUtils.isNotBlank(searchDto.getPermissionDescpt()),MchBasePermission.DESCPT,searchDto.getPermissionDescpt());
    
            //重要
            List<MchBasePermission> permissionList = baseMapper.selectPage(page,wrapper).getRecords();
    
            List<PermissionDTO> permissions = permissionList.stream().map(v ->{
                PermissionDTO dto =new PermissionDTO();
                BeanUtils.copyProperties(v,dto);
                dto.setPname(getPermissionNameById(dto.getPid().longValue()));
                return dto;
            }).collect(Collectors.toList());
    
            if(permissions.size() != 0){
               return YTPageResponse.newInstance((int) page.getTotal(),permissions);
            }
            return YTPageResponse.newInstance();
        }
    

    效果图

    image.png

    结束语

    挺简单

    相关文章

      网友评论

          本文标题:MybatisPlus 分页工具

          本文链接:https://www.haomeiwen.com/subject/vusczctx.html