MybatisPlus 分页工具

2020-01-17  本文已影响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

结束语

挺简单

上一篇下一篇

猜你喜欢

热点阅读