简介
后端开发,避免不了分页,市场上经常使用的分页工具类是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结束语
挺简单
网友评论