当前位置: 首页 > news >正文

Mybatis-plus插件功能

一、分页插件

注意:用的是mybatisplus的,不是hutool工具包的

在mybatisplus实现分页插件,第一步先在mybatisplus核心插件添加分页插件。

编写分页查询代码

二、统一分页实体

这是返回值

@Overridepublic PageDTO<UserVO> queryUsersPage(UserQuery query) {String name = query.getName();Integer status = query.getStatus();//1、构造查询条件//1.1.分页条件Page<User> page = Page.of(query.getPageNo(), query.getPageSize());//1.2.排序条件if(query.getSortBy()!=null){page.addOrder(new OrderItem(query.getSortBy(),query.getIsAsc()));}else {//按照默认修改时间排序page.addOrder(new OrderItem("update_time",false));}//2、查询Page<User> p = lambdaQuery().like(name != null, User::getUsername, name).eq(status != null, User::getStatus, status).page(page);//3、封装VO结果PageDTO<UserVO> dto = new PageDTO<>();//3.1.总条数dto.setTotal(p.getTotal());//3.2.总页数dto.setPages(p.getPages());//3.3.当前页数据List<User> records = p.getRecords();if (CollUtil.isEmpty(records)){dto.setList(Collections.emptyList());return dto;}//3.4.拷贝user的VOList<UserVO> vos = BeanUtil.copyToList(records, UserVO.class);dto.setList(vos);return dto;}

下面这个采用了DB静态工具

@Override
public PageDTO<UserVO> queryUsersPage(PageQuery query) {// 1.构建条件// 1.1.分页条件Page<User> page = Page.of(query.getPageNo(), query.getPageSize());// 1.2.排序条件if (query.getSortBy() != null) {page.addOrder(new OrderItem(query.getSortBy(), query.getIsAsc()));}else{// 默认按照更新时间排序page.addOrder(new OrderItem("update_time", false));}// 2.查询page(page);// 3.数据非空校验List<User> records = page.getRecords();if (records == null || records.size() <= 0) {// 无数据,返回空结果return new PageDTO<>(page.getTotal(), page.getPages(), Collections.emptyList());}// 4.有数据,转换List<UserVO> list = BeanUtil.copyToList(records, UserVO.class);// 5.封装返回return new PageDTO<UserVO>(page.getTotal(), page.getPages(), list);
}

三、通用分页实体与MP转换

就是把分页查询需要构建的查询条件,已经查询完后数据转换,抽到一个类中,需要时直接调它就行了

构建查询条件

public <T> Page<T> toMpPage(OrderItem ... items){//1.分页条件Page<T> page = Page.of(pageNo, pageSize);//2.排序条件if(StrUtil.isNotBlank(sortBy)){page.addOrder(new OrderItem(sortBy,isAsc));}else if(items!=null){//按照默认修改时间排序page.addOrder(items);}return page;}public <T> Page<T> toMpPage(String defaultSortBy,Boolean defaultAsc){return toMpPage(new OrderItem(defaultSortBy,defaultAsc));}public <T> Page<T> toMpPageDefaultSortByCreateTime(){return toMpPage(new OrderItem("create_time",false));}public <T> Page<T> toMpPageDefaultSortByUpdateTime(){return toMpPage(new OrderItem("update_time",false));}
//1、构造查询条件Page<User> page = query.toMpPageDefaultSortByUpdateTime();

数据类型转换

public static <PO,VO> PageDTO<VO> of(Page<PO> p,Class<VO> clazz){//3、封装VO结果PageDTO<VO> dto = new PageDTO<>();//3.1.总条数dto.setTotal(p.getTotal());//3.2.总页数dto.setPages(p.getPages());//3.3.当前页数据List<PO> records = p.getRecords();if (CollUtil.isEmpty(records)){dto.setList(Collections.emptyList());return dto;}//3.4.拷贝user的VOList<VO> vos = BeanUtil.copyToList(records, clazz);dto.setList(vos);return dto;}

当有特殊需求的数据转换,就用到函数式接口了

public static <PO,VO> PageDTO<VO> of(Page<PO> p, Function<PO,VO> convertor){//3、封装VO结果PageDTO<VO> dto = new PageDTO<>();//3.1.总条数dto.setTotal(p.getTotal());//3.2.总页数dto.setPages(p.getPages());//3.3.当前页数据List<PO> records = p.getRecords();if (CollUtil.isEmpty(records)){dto.setList(Collections.emptyList());return dto;}//3.4.拷贝user的VOdto.setList(records.stream().map(convertor).collect(Collectors.toList()));return dto;}

http://www.dtcms.com/a/390936.html

相关文章:

  • weex分析美联储降息新周期:市场迎来机遇与挑战
  • Micronaut 集成 SPL 实现微服务
  • 类加载的过程以及双亲委派模型
  • 将 RabbitMQ 与 .NET Core Web API 和 Worker Services 结合使用
  • 面试编程题(三)
  • SSD性能优化之4K对齐
  • dolphindb vscode更改连接配置的操作步骤
  • 船用配电盘在线绝缘监测故障定位系统
  • 爬虫逆向--Day22Day23--核心实战案例【四川农机购置与补贴信息】【Webpack国密SM3、SM4】
  • 计算机网络————第二章 物理层
  • uniapp usb调试鸿蒙一直连接不上。
  • MySQL独立表空间:优缺点与最佳实践
  • 直播预告 | P4 One正式发布:让创新协作更简单、更安全、更可靠
  • Zookeeper脑裂是什么原因导致的?
  • APK360加固与“脱壳”:移动应用安全的攻与防
  • langchain-routerchain
  • 第四章:VSCode编辑器使用介绍
  • Problem: lab-week3- exercise03 Selection sort
  • Vue 事件总线 主流的一些npm包推荐
  • 总线协议如何支持总线错误条件?
  • N-156基于springboot,vue小区物业管理系统
  • 物理心理学 (Psychophysics) - 阈值 (Threshold) 测量方法 - 人因工程笔记2
  • 从 “数据采集” 到 “性能跃迁”:Simcenter LMS 如何用振动噪声试验,激活高端装备核心竞争力?
  • 【STL vector的全面指南】基础操作与底层实现<1>
  • 微服务-基础知识(CAP、BASE)
  • 存储卷清理策略在vps环境磁盘空间维护的操作指南
  • Day46 ARM硬件体系 从计算机架构、处理器类型、指令集到内核寄存器与SoC总线结构
  • 【MySQL】从视图到用户和权限管理
  • 栈与队列:核心差异与应用场景
  • 【Hadoop】ZooKeeper:分布式系统的协调核心与一致性保障