泪伤荡的编程指南 泪伤荡的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM篇
  • 新特性
  • 进阶篇
  • 网络
  • 操作系统
  • 数据结构与算法
  • 硬件
  • 基础篇
  • MySql
  • Oracle
  • PostgreSQL
  • 达梦
  • Redis
  • Mongodb
  • Hive
  • 数据库比较
  • Spring
  • SpringMvc
  • SpringBoot
  • Hibernate
  • iBatis
  • Mybatis
  • Mybatis-plus
  • Mybatis-plus-join
  • 各个框架对比
  • UML画图
  • 设计须知
  • 开发流程
  • 开发理论
  • 架构体系
  • 设计模式
  • 开源知识
  • 分布式解决方案
  • SpringCloud
  • API网关
  • 注册中心
  • 配置中心
  • 服务调用
  • 分布式事务
  • 消息队列
  • 调度作业
  • 链路追踪
  • 服务保障
  • 搜索引擎Elk
  • 安全框架
  • 监控体系
  • 部署容器
  • Netty
  • Tomcat
  • Nginx
  • 图片云存储
  • 云存储
  • 虚拟机Linux
  • 项目部署
  • 容器部署
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • Bug记录仓库
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 视频网站
  • 音乐网站
  • 商城网站
  • 论坛网站
  • scrm项目
  • Yudao-cloud
  • RuoYi-Vu-cloud
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • Java术语
  • 命名英语
  • 业务英语
  • 表字段英语
  • 包名英语
Github (opens new window)
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM篇
  • 新特性
  • 进阶篇
  • 网络
  • 操作系统
  • 数据结构与算法
  • 硬件
  • 基础篇
  • MySql
  • Oracle
  • PostgreSQL
  • 达梦
  • Redis
  • Mongodb
  • Hive
  • 数据库比较
  • Spring
  • SpringMvc
  • SpringBoot
  • Hibernate
  • iBatis
  • Mybatis
  • Mybatis-plus
  • Mybatis-plus-join
  • 各个框架对比
  • UML画图
  • 设计须知
  • 开发流程
  • 开发理论
  • 架构体系
  • 设计模式
  • 开源知识
  • 分布式解决方案
  • SpringCloud
  • API网关
  • 注册中心
  • 配置中心
  • 服务调用
  • 分布式事务
  • 消息队列
  • 调度作业
  • 链路追踪
  • 服务保障
  • 搜索引擎Elk
  • 安全框架
  • 监控体系
  • 部署容器
  • Netty
  • Tomcat
  • Nginx
  • 图片云存储
  • 云存储
  • 虚拟机Linux
  • 项目部署
  • 容器部署
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • Bug记录仓库
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 视频网站
  • 音乐网站
  • 商城网站
  • 论坛网站
  • scrm项目
  • Yudao-cloud
  • RuoYi-Vu-cloud
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • Java术语
  • 命名英语
  • 业务英语
  • 表字段英语
  • 包名英语
Github (opens new window)
  • 开发工具篇

    • idea设置

      • 配置篇
      • 快捷键篇
      • debug篇
      • 插件篇
    • 玩转Git

      • 基础知识梳理
      • Git配置相关操作
      • git修改已提交人的用户名和邮箱
      • git提交规范
      • 常见问题
    • Maven相关

      • Maven简介
      • Maven常用命令
      • 依赖管理
      • Maven生命周期与插件
      • Maven项目管理工具
    • Apifox使用小结
    • nvm使用小结
    • JMeter使用小记
  • 工具库篇

    • lombok工具库

      • lombok注解使用小结
      • Builder用法解析
      • 异常相关注解
    • EasyExcel小记

      • 工具类
      • 文件导入
      • 文件导出
    • 定时任务相关

      • 基础入门
      • SpringTask学习
      • Quartz学习
    • Hutool工具库

      • 图片压缩
    • 极光推送学习
    • OkHttp学习
    • BigDecimal类详解
    • PdfBox学习
  • 开发技巧篇

    • 常见数据校验注解
    • 字符串拼接的5种方式
    • 遍历集合的N种方式
    • 集合使用注意事项总结
    • MP使用小记
      • 给现有分页指定字段排序
        • 第一种方法
        • 第二种方法
      • 条件判断
      • lambdaQuery 实现 list
      • 实现 distinct 去重功能
      • 自动填充
      • 清空查询条件
    • Stream流技巧总结
    • 字符串处理最佳实践
    • SQL语句优化
    • 时间字段处理小记
    • Curl用法解析
    • 列表分页的两种实现方案
    • HashMap根据value获取key
    • Map的7种遍历方式
    • 唯一索引和逻辑删除冲突解决方法
    • 正则表达式
    • 二维码扫码登录学习
    • 脱敏最佳实践
    • 日志记录相关
  • 工具类系列

    • 手写一个文件阅读器
    • 手写一个运行耗时计算器
    • 自定义实现Java Bean属性中列表元素格式校验注解及其实现
    • 父子工程项目搭建
    • 自制代码生成器
  • 随笔

    • HttpServletRequest知识小结
    • Spring MVC 项目构建流程
    • 虚拟机固定ip地址
    • 项目部署
    • 深入理解数组
    • IIS使用小记
    • From的两种类型解析
    • 开发疑惑
    • 开发小记
    • bug解决
  • 开发日常
  • 开发技巧篇
泪伤荡
2023-11-09
目录

MP使用小记

# MP 使用小记

所谓 MP 是指:Mybatis-Plus

# 给现有分页指定字段排序

# 第一种方法

  • 其中,reqDTO 是方法参数。
  • 主要内容是:给 page 插入排序属性。
    // 1、MP
    Page<TestVO> page = new Page<>();
    page.setCurrent(reqDTO.getCurrent());
    page.setSize(reqDTO.getSize());

    List<OrderItem> itemList = new ArrayList<>();
    // 插入排序属性
    OrderItem orderItem = new OrderItem();
    orderItem.setColumn("create_time"); // 按什么字段排序
    orderItem.setAsc(false); // 是否升序
    itemList.add(orderItem);
    page.setOrders(itemList);

1
2
3
4
5
6
7
8
9
10
11
12
13

# 第二种方法

利用 MP 中 IService<T> 的 lambdaQuery() 方法。

        
			 // select * from learning_lesson where user_id = #{userId} order by latest_learn_time desc limit #{offset}, #{size}
        Page<LearningLesson> page = lambdaQuery()
                .eq(LearningLesson::getUserId, userId) // where user_id = #{userId}
                .page(query.toMpPage("latest_learn_time", false));

1
2
3
4
5
6

# 条件判断

主要有以下几种:

  1. eq 就是 equal 等于
  2. ne 就是 not equal 不等于
  3. gt 就是 greater than 大于
  4. lt 就是 less than 小于
  5. ge 就是 greater than or equal 大于等于
  6. le 就是 less than or equal 小于等于

# lambdaQuery 实现 list

		// 第一种写法
	  LambdaQueryWrapper<EnterpriseEntity> wrapper = new LambdaQueryWrapper<>();
    wrapper.eq(EnterpriseEntity::getEnterpriseId, id);
    List<EnterpriseEntity> list = entService.list(wrapper);

    // 第二种写法
    List<EnterpriseEntity> list = entService.lambdaQuery().eq(EnterpriseEntity::getEnterpriseId, id).list();
1
2
3
4
5
6
7

还可以用 select() 指定查询字段

# 实现 distinct 去重功能

    List<EnterpriseEntity> list = this.query()
      .select("distinct type")
      .eq("enterprise_id", entId)
      .between("upload_time", DateUtil.beginOfDay(today), DateUtil.endOfDay(today))
      .list();
1
2
3
4
5

# 自动填充

使用 @TableField 注解的 fill 属性,结合自定义的 MetaObjectHandler,可以实现字段自动填充。

@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;

@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
1
2
3
4
5

# 清空查询条件

MyBatis-Plus 中 QueryWrapper 类提供的方法之一:queryWrapper.clear() 。

  • 用于清空当前 QueryWrapper 对象中的查询条件,让 QueryWrapper 对象重新变为空白状态。

在实际的开发中,我们可能需要根据不同的条件动态构建查询条件,而 queryWrapper.clear() 提供了一种方便的方式,可以在重新构建查询条件之前清空已有的条件。

public List<User> queryUserList(String name, Integer age) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    
    // 第一次构建查询条件
    if (StringUtils.isNotBlank(name)) {
        queryWrapper.like("name", name);
    }
    if (age != null) {
        queryWrapper.eq("age", age);
    }

    List<User> userList = userMapper.selectList(queryWrapper);

    // 清空查询条件
    queryWrapper.clear();

    // 第二次构建新的查询条件
    queryWrapper.eq("status", 1);
    List<User> userListWithStatus1 = userMapper.selectList(queryWrapper);

    // 返回结果,注意:此时的 queryWrapper 已经没有之前的条件了
    return userListWithStatus1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
上次更新: 2024/10/26 02:01:17
集合使用注意事项总结
Stream流技巧总结

← 集合使用注意事项总结 Stream流技巧总结→

Theme by Vdoing | Copyright © 2024-2025 泪伤荡 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式