一、mybatis-plus

是mybatis的一种优化版本,省略了单表的xml文件的编写

二、关于mybatis-plus的分页

1.依赖配置如下

        <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.3.2</version></dependency>
mybatis-plus:mapper-locations: classpath:/mapper/*.xmltype-aliases-package: com.shidai.entity# 这里是配置了mybatis-plus的日志configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

2.分页响应数据模型

你传入的@RequestBody参数对象必须继承BasePageReqVO

@Data
@ApiModel("基础分页request")
public class BasePageReqVO implements Serializable {@ApiModelProperty("页码,索引从1开始")private Integer pageNo;@ApiModelProperty("每页大小")private Integer pageSize;
}

筛选数据的条件+分页条件,MenuReqVO 与MenuPO其实属性也一样,只不过多了分页的

@Data
@ApiModel("菜单请求数据")
public class MenuReqVO extends BasePageReqVO{@ApiModelProperty("菜单id")private Integer menuId;@ApiModelProperty("菜单名字")private String menuName;@ApiModelProperty("菜单url")private String menuUrl;@ApiModelProperty("父级id")private Integer parentId;@ApiModelProperty("水平")private Integer level;}
/**
* 菜单响应VO,作为BasePageResVO的rows返回
*/
@Data
public class MenuResVO {private Integer menuId;private String menuName;private String menuUrl;private Integer parentId;private Integer level;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("基础分页response")
public class BasePageResVO<T> implements Serializable {@ApiModelProperty("页码,索引从1开始")private Integer pageNo;@ApiModelProperty("每页大小")private Integer pageSize;@ApiModelProperty("总页数")private Integer totalPage;@ApiModelProperty("总条数")private Long totalCount;// 查询的分页数据全在这里面@ApiModelProperty("列表数据")private List<T> rows;public BasePageResVO(int pageNo, int pageSize, long totalCount, List<T> rows) {this.pageNo = pageNo;this.pageSize = pageSize;this.totalCount = totalCount;this.totalPage = totalPage();this.rows = rows;}private Integer totalPage() {if (totalCount == 0 || pageSize == 0) {return 1;}return (int) Math.ceil((float) totalCount / pageSize);}
}

一个实体,无论是查询列表数据,还是分页数据,一般都有一对reqvo和resvo对象
响应时我们不能使泛型为PO对象,虽然从数据库里查询出来的是PO对象,但我们可以通过Stream流得map转换类型!

3.分页数据

    public BasePageResVO<MenuResVO> menuPage(MenuReqVO reqVO) {LambdaQueryWrapper<MenuPO> menuPOLambdaQueryWrapper = new LambdaQueryWrapper<>();LambdaQueryWrapper<MenuPO> lambdaQueryWrapper = menuPOLambdaQueryWrapper.like(StringUtils.isNotBlank(reqVO.getMenuName()),MenuPO::getMenuName,reqVO.getMenuName()).orderByDesc(MenuPO::getLevel);//  Page<MenuPO>对象中不仅有数据记录,还有分页总数,页数等等Page<MenuPO> menuPOPage = menuMapper.selectPage(new Page<>(reqVO.getPageNo(), reqVO.getPageSize()), lambdaQueryWrapper);// 将MenuPO --> MenuResVO,PO不能作为交互对象,虽然两者属性值一样List<MenuPO> menuResVOS = menuPOPage.getRecords();List<MenuResVO> menuResVOs = menuResVOS.stream().map(o -> {MenuResVO menuPageVO = new MenuResVO();BeanUtils.copyProperties(o, menuPageVO);return menuPageVO;}).collect(Collectors.toList());return new BasePageResVO<MenuResVO>((int)menuPOPage.getCurrent(),(int)menuPOPage.getSize(),menuPOPage.getTotal(), menuResVOs);}

MyBatis-plus分页查询整理相关推荐

  1. spring boot集成mybatis-plus——Mybatis Plus 分页查询数据(图解)

    Mybatis Plus 分页查询数据(图解)  更新时间 2023-01-01 11:58:32 大家好,我是小哈. 本小节中,我们将学习如何通过 Mybatis Plus 分页查询数据库表中的数据 ...

  2. Mybatis+springMVC+分页查询+前后端代码

    Mybatis+springMVC+分页查询+前后端代码 前言 我们在公司中经常会用到分页查询,最近,我在做一个公司的任务的时候,调用外部系统时需要将结果封装成分页的数据,之前我们都是直接调用我们公司 ...

  3. mybatis实现分页查询-自己封装分页方法

    大致结构如下: 一.定义返回数据结构 创建返回数据结构主要是为了统一方便,和分页查询的关系并不大,也可以忽略这一步. package boc.ljh.config;import io.swagger. ...

  4. Hasor【付诸实践 03】Dataway 无代码接口工具 DataQL 聚合查询引擎使用 Mybatis 实现分页查询举例说明 + 问题分析(针对GreenPlum数据库)

    Hasor 框架 Dataway 使用可参考我之前分享的 SpringBoot 集成 Hasor[Dataway 无代码接口工具]配置及问题解决 .这里记录一下使用DataQL遇到的问题. 1.举例及 ...

  5. 数据库:SQLServer分页查询整理

    作为程序员来说,与数据库打交道是十分频繁的分页查询是一个开发者必须掌握的基本知识点,目前整理了下面三种SQLServer分页查询语句的写法,仅供参考. 一.Top Not IN 方式(查询靠前的数据较 ...

  6. SB mybatis 实现分页查询以及 分页查询请求和返回的封装

    首先实现分页查询很简单 ,这里的前提是你是用制动生成mybatis插件写的mybatis: 1.导入分页gav: <dependency><groupId>com.github ...

  7. MyBatis实现分页查询

    目录 一.基于注解的简单分页查询 1.定义对象 2.Mapper接口 3.Controller类 4.功能实现 二.基于注解的较复杂分页查询 1.定义shop实体类和page分页类 2.Mapper接 ...

  8. 使用 Mybatis——Plus 分页查询

    配置拦截器组件 @Configuration public class MyBatisPlusConfig {//分页插件@Beanpublic MybatisPlusInterceptor Myba ...

  9. MyBatis学习总结(12)——Mybatis+Mysql分页查询

    package cn.tsjinrong.fastfile.util; /**  * @ClassName: Page  * @Description: TODO(分页组件的父类,用来封装分页的 通用 ...

最新文章

  1. 伺服电机选型惯量比重要性
  2. 三菱的触摸屏usb驱动_资深工程师一步一步教你PLC与西门子触摸屏的RS485通信
  3. SpringBoot 之Quartz的使用
  4. 关于编译GITHUB上的工程
  5. 一起学Android之Menu
  6. Python深入类和对象
  7. .NET技术+25台服务器怎样支撑世界第54大网站
  8. 配置环境变量OpenJDK和OracleJDK区别
  9. NumPy进阶教程——超详细
  10. ACM - ICPC World Finals 2013 A Self-Assembly
  11. [BZOJ3555] [Ctsc2014]企鹅QQ(Hash)
  12. MAC 及 Python 快捷键
  13. 区块链Baas平台强势来袭,助力企业快速搭建区块链落地项目
  14. 致敬柳传志三网合一的佳沃品牌之路
  15. 【转载】游戏场景设计、构图的一些基本思考
  16. 手机内存卡丢失数据怎么恢复
  17. JS下载文件|无刷新下载文件
  18. 基于单片机的电子秤(计价/播报)电路设计(#0223)
  19. 一切从架构的基本元素出发
  20. Auto.js简单使用

热门文章

  1. 内网渗透系列:内网隧道之nps
  2. 基于JAVA计算机在线学习管理系统-计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  3. python基于cv2实现给一张图片增加边框
  4. 以太坊Python智能合约开发指南
  5. Vue.js中Twitter第三方登录api实现[亲测可用]
  6. “互联网汽车”又添新成员,上汽斯柯达接入斑马智行互联系统
  7. 信息学奥赛一本通c++版在线评测系统_OPPO Reno3 Pro评测:迄今为止最“性感”的5G手机...
  8. android蓝牙连接通信的实现
  9. 线段树模板(来自胡浩大牛)
  10. 机器学习中的数学(1):MIT大牛写的综述