条件查询LambdaQueryWrapper

2023-11-04

MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用

假如我们有一张user表,现需要通过user_name查出所有数据

@ApiModel(description = "用户实体")
public class User {

    /**
     * serialVersionUID
     */
    @ApiModelProperty(value = "主键")
    private Integer id;

    @ApiModelProperty(value = "用户名")
    private String username;

    @ApiModelProperty(value = "真实昵称")
    private String realname;

    @ApiModelProperty(value = "性别")
    private String sex;

    @ApiModelProperty(value = "工号")
    private String jobNum;

    @ApiModelProperty(value = "状态 0 启用 1 禁用")
    private Integer isDel;

    @ApiModelProperty(value = "部门")
    private Integer departmentId;

    private String departmentName;

    @ApiModelProperty(value = "密码")
    private String password;// 用户密码

    @ApiModelProperty(value = "手机")
    private String mobile;// 手机

    private Integer createUser;

    private Integer editUser;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date gmtCreate;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date gmtUpdate;
    }
  • QueryWrapper
    最基础的使用方式是这样
// 查询条件构造器
QueryWrapper<User > wrapper = new QueryWrapper<>();
wrapper.eq("user_name", id);
// 查询操作
List<User > users = userMapper.selectList(wrapper);

然后我们可以引入lambda,避免我们在代码中写类似的于user_name的硬编码

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(User::getuserName, userName);
List<User> users= userMapper.selectList(wrapper);
  • LambdaQueryWrapper
    为了简化lambda的使用,我们可以改写成LambdaQueryWrapper构造器,语法如下:
LambdaQueryWrapper<User> wrapper = new QueryWrapper<User>().lambda();
wrapper.eq(User::getuserName, userName);
List<User> users= userMapper.selectList(wrapper);

我们可以再次将QueryWrapper.lambda()简化,变成这个样子

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getuserName, userName);
List<User> bannerItems = userMapper.selectList(wrapper);

链式查询
MyBatis-Plus还提供了一种链式查询的方式,和上面的代码效果一样。
但是这种写法偏向于炫技,可读性没有上面的代码强,大家可以根据需要自行选择方式。

List<User> bannerItems = new LambdaQueryChainWrapper<>(bannerItemMapper)
                        .eq(User::getuserName, userName)
                        .list();

// 增加条件

int count = tcmcConfigTreeService.count(
                    new LambdaQueryWrapper<TcmcConfigTree>()
                            .eq(TcmcConfigTree::getNodeName, tcmcConfigTree.getNodeName()).ne(TcmcConfigTree::getId, tcmcConfigTree.getId())
                    
            );

LambdaQueryWrapper 条件删除

条件删除符合条件的全部删除

  LambdaQueryWrapper<USer> objectLambdaQueryChainWrapper = new LambdaQueryWrapper<>();
            objectLambdaQueryChainWrapper.eq(User::getDepartmentId, departmentId);
            cEquipmentMapper.delete(objectLambdaQueryChainWrapper);
EQ 就是 EQUAL等于
NE就是 NOT EQUAL不等于
GT 就是 GREATER THAN大于
LT 就是 LESS THAN小于
GE 就是 GREATER THAN OR EQUAL 大于等于
LE 就是 LESS THAN OR EQUAL 小于等于

QueryWrapper多表联查分页、IPage分页

点击进入

假如有帮助希望点个赞!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

条件查询LambdaQueryWrapper 的相关文章

随机推荐

  • Hbase Compaction 队列数量较大分析(压缩队列、刷新队列)

    前几天朋友公司Hbase集群出现Compaction队列持续处于比较大的情况 并且mem flush队列也比较大 一起看了下问题 大概情况如下图 从图中可以看出来压缩队列总和持续在1000 2000 平对压缩队列在200左右 刷新队列也比较
  • 三菱触摸屏怎么改时间_三菱plc的触摸屏程序,三菱触摸屏如何更改时间

    三菱plc的触摸屏程序 D8013D8014D8015D8016D8017D8018D8019秒 分钟 小时 日 月 年和周 假定上述时间需要改变 屏幕D10D11D12D13D14D15D16秒 分钟 天 月 年和周按钮M0程序LDM0设
  • Hive 用户自定义函数UDF详解

    本例自定义一个Hive UDF函数 功能是将从Hive数据仓库查询出来的字符串进行大小写转换 第一步 创建java工程 添加jar包 导入Hive的lib目录下的jar包以及hadoop安装目录下的hadoop core jar 第二步 新
  • RuoYi实现数据分页

    目录 一 实例简介 登录日志查询 数据分页作用 二 前端代码 1 打开操作日志页面源码文件 2 函数调用链 3 开发者工具查看前端访问后端信息 编辑 三 后端代码 函数startPage 和getDataTable 输出结果 一 实例简介
  • 栈 - 关于出栈序列,判断合法的出栈序列

    文章目录 1 引例 2 做题方法 3 原因 3 1 选项D 4 3 1 2 的模拟 1 引例 例 设栈的入栈序列是 1 2 3 4 则下列不可能是其出栈序列的是 A 1 2 4 3 B 2 1 3 4 C 1 4 3 2 D 4 3 1 2
  • MySQL数据库总体知识架构

    一 关系型数据库设计理论 一些重要术语 属性 attribute 列的名字 我们在开发中一般称为字段 依赖 relation 字段之间存在的关系 元祖 tuple 每一个行 如第二行 1301 小明 13班 篮球 英语 赵英 70 就是一个
  • Murmurhash 哈希算法 介绍与实现

    最近在项目代码中看到了一种hash算法 以前没有遇见过 在此记录下来 一 介绍 MurmurHash 是一种非加密型哈希函数 适用于一般的哈希检索操作 由Austin Appleby在2008年发明 并出现了多个变种 都已经发布到了公有领域
  • 基于单向链表实现LRU缓存淘汰算法

    准备工作 思考 链表是由一个一个结点单向连接而成 因此我们需要创建一个结点类 该类包含结点数据 以及下一个结点的位置信息 一 结点类 package com linkTest public class Node
  • golang反编译_【Golang】脱胎换骨的defer(一)

    Go语言的defer是一个很方便的机制 能够把某些函数调用推迟到当前函数返回前才实际执行 我们可以很方便的用defer关闭一个打开的文件 释放一个Redis连接 或者解锁一个Mutex 而且Go语言在设计上保证 即使发生panic 所有的d
  • Maximum String Length

    The latest version of this topic can be found at Maximum String Length Microsoft Specific ANSI compatibility requires a
  • Flutter的TextButton的最小高度受限的问题

    用ConstrainedBox或SizedBox作TextButton的父级来控制TextButton的Size时 可以加大TextButton 但是用上面的方式设TextButton的高度小于44时 就会失效 可以用下面的方式来解决最小高
  • 判断鼠标是否点击在UI上

    EventSystem current IsPointerOverGameObject 方法 作用 判断鼠标是否点击在UI上 在窗口端进行判断时使用 如果按下了鼠标左键并且 鼠标点击的不是UI if Input GetMouseButton
  • 常见排序算法(c++)

    插入排序 直接插入排序 直接插入排序 Straight Insertion Sort 是一种最简单的排序方法 其基本操作是将一条记录插入到已排好序的有序表中 从而得到一个新的 记录数量增1的有序表 include
  • k-means聚类算法及matlab实现(简单实现)

    k means简介 k means算法也称k均值算法 是一种常用的聚类算法 聚类算法是研究最多 应用最广的一种无监督学习算法 聚类试图将数据集中的样本划分为若干个通常是不相交的子集 每个子集称为一个 簇 通过这样的划分 每个簇里的样本可能具
  • Python封装了很好用的结构和方法,为啥还要学数据结构?

    文章目录 前言 Python内置数据类型性能分析 timeit模块 列表内置方法性能分析 列表内置操作的时间复杂度 字典内置操作时间复杂度 最后 前言 大家前面学过Python基础知识的都知道 Python为我们封装了列表 字典等高级数据类
  • Linux查询java服务占用的内存

    使用top命令可以查询 top o MEM b n 1 grep java awk print PID 1 t MEM 6 t CPU 9 t MEM 10 使用jps l 可以查询jar包名称和PID
  • kvm虚拟管理之kvm热迁移

    上一篇写不下了 补在这一篇 kvm虚拟管理之kvm热迁移 热迁移的原理如下 想将一台正在运行的虚拟机迁移过去必须借助共享存储 将磁盘挂载到共享存储上 谁想用就挂载 三台机器的环境配置如下 在nfs主机上的文件配置如下命令 root nfs0
  • 五年测试工程师一上来就要18K薪资,结果一问三不知

    现在招个合适的人可真难呀 不是这不会就是那不会 没有一个让我满意的 公司前段时间缺人 面试了不少的测试 结果居然没有一个符合要求的 一开始瞄准的就是中级测试工程师的水准 也没指望来技术大牛 提供的薪资在10 20k 面试的人很多 但平均水平
  • QT项目开发-多界面平台构建-1

    好久不发博文了 发一下关于QT项目开发 对于平台搭建一块 新手也可以看看 1 安装好QT 网上有很多教程可以参考 我用的5 9 如果有需要可以留言 2 首先建立一个QT Widget Application项目 3 一开始建立的项目有 pr
  • 条件查询LambdaQueryWrapper

    MyBatis Plus QueryWrapper及LambdaQueryWrapper的使用 假如我们有一张user表 现需要通过user name查出所有数据 ApiModel description 用户实体 public class