美文网首页
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 分页工具

    简介 后端开发,避免不了分页,市场上经常使用的分页工具类是GtiHub的pagehelper,这里不做赘述,今天咱...

  • SpringBoot 全家桶 | MyBatisPlus(四)分

    本文源码:Gitee·点这里 MyBatisPlus有现成的分页功能,需要将插件添加到配置中 配置分页插件 分页查...

  • MybatisPlus实现分页

    常见的分页方式 1,原始的limit分页 2,使用pageHelper第三方插件分页 3,使用MabatisPlu...

  • MyBatisPlus

    MyBatisPlus MyBatisPlus简称mp,是mybatis的增强工具,在mybatis的基础上只做增...

  • Spring Boot +MyBatisPlus分页

    今天第一次尝试使用mybatisplus,尤其是分页这块,感觉比我以前用的sprig data jpa 还要好用,...

  • MyBatisPlus 分页page排序

    背景 如何按照时间进行倒序排列,利用mapper对象进行排序见代码 在Mapper添加queryWrapper.o...

  • MybatisPlus分页条件查询

    前提:先导入MybatisPlus相关依赖 1、配置分页插件(不需要修改) 2、将查询条件封装成类 3、接口使用g...

  • SpringBoot集成MybatisPlus

    1.MybatisPlus mybatisPlus是一款Mybatis高效工具,它的使用方便,上手快捷,可以帮助我...

  • MybatisPlus使用

    小技巧 01 在mapper.xml中写sql并且需要使用mybatisplus中得分页插件时,可以在servic...

  • Java Web 之分页技术

    本文包括:1、分页技术概述2、实现分页3、完善分业——分页工具条4、几种常见的分页工具条 1、分页技术概述 物理分...

网友评论

      本文标题:MybatisPlus 分页工具

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