Mybatis-Plus--LambdaQueryChainWrapper--使用/实例

news2024/11/29 8:38:01

原文网址:Mybatis-Plus--LambdaQueryChainWrapper--使用/实例_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文用示例介绍Mybatis-Plus的LambdaQueryChainWrapper的用法。

        这种用法是使用Mybatis-Plus进行查询最好用的方法,用过一次后就不会再想用其他写法了。

LambdaQueryChainWrapper的好处

        以前是创建一个条件构造器,再通过mapper或service以条件构造器为参数进行查询。LambdaQueryChainWrapper将前面的两句合二为一,一句来完成带条件的查询。

        LambdaQueryChainWrapper有以下方法获取数据:

  1. page():分页
  2. list():列表
  3. one():获取1个。若有多个结果,则报异常。此方法只用于只有一个结果的情况。

LambdaQueryChainWrapper也拥有LambdaQueryWrapper的好处:

  1. 写法最简洁,最短
  2. 写起来最快
  3. 很方便对齐,可读性好
  4. 不需要Mapper
  5. 不需要手动找到对应的字段名,直接用User::xxx即可。

例1:多条件查询

名字中带“张”且年龄小于30岁

@Autowired
private UserService userService;

​public void selectWrapper15() {
    List<User> users = userService.lambdaQuery()
        .like(User::getName, "张")
        .lt(User::getAge, 30)
        .list();
    
    users.forEach(System.out::println);
}

例2:AND中条件是OR

名字中带“王”且年龄小于40或邮箱不为空。

@Autowired
private UserService userService;

public void selectWrapper16() {
    List<User> users = userService.lambdaQuery()
        .like(User::getName, "张")
        .and(user -> user.lt(User::getAge, 40).or().isNotNull(User::getEmail))
        .list();

    users.forEach(System.out::println);
}

用法详解

创建Wrapper的方法

法1:service.lambdaQuery()(推荐)

@Autowired
private UserService userService;

​public void selectWrapper15() {
    List<User> users = userService.lambdaQuery()
        .eq(User::getAge, 30)
        .list();
    
    users.forEach(System.out::println);
}

法2:用new来创建,需要传入mapper(不推荐)

@Autowired
private UserMapper userMapper;

public void test() {
    List<User> list = new LambdaQueryChainWrapper<User>(userMapper)
            .select(User::getId, User::getName)
            .like(User::getName, "王")
            .list();
    System.out.println(list);
}

注意

  1. 不能传到mapper中作为条件
    1. 比如:userMapper.selectList(queryWrapper) ; queryWrapper不能是LambdaQueryChainWrapper,可以是LambdaQueryWrapper
  2. 不能作为saveOrUpdate的条件
    1. 比如:userService.saveOrUpdate(user, queryWrapper) ; queryWrapper不能是LambdaQueryChainWrapper,可以是LambdaQueryWrapper

方法大全

 可用的查询

可用的比较

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

某有色金属集团主数据管理面临的问题和解决方案

某有色金属集团成立于2002年&#xff0c;出资人为省国资委&#xff0c;注册资金12.6亿元人民币。以有色金属、稀有金属、黄金资源开发为主&#xff0c;集地质勘查、采矿、选矿、冶炼、加工、科研设计、机械制造、建筑安装、商贸物流及物资进出口、房地产开发、物业管理为一体的…

获得认证标志证书VMC教程

Verified Mark Certificate(VMC)是由证书颁发机构颁发的用于验证徽标所有权的数字证书。在收到VMC之前&#xff0c;您的徽标必须是注册商标。 VMC验证您的组织是您品牌徽标的合法所有者。使用带有VMC的徽标有助于防止垃圾邮件发送者和其他恶意用户使用他们不拥有的品牌徽标。注…

Linux权限介绍

文章目录Linux权限介绍1. shell命令及原理2. Linux权限的概念3. Linux权限管理3.1 人&#xff08;用户&#xff09;3.2 事物属性(文件类型和访问权限)3.3 文件访问权限的相关设置方法3.3.1 chmod3.3.2 chown3.3.3 chgrp3.4 file指令3.5 目录权限3.6 默认权限3.7 粘滞位3.7.1. 了…

matlab学习笔记(七)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 matlab学习笔记&#xff08;七&#xff09;一、 LTI系统的响应impulse( ) 函数step( )函数lsim( )函数系统无初态时系统有初始状态时二、使用步骤A1&#xff1a;A2&#xff1…

Sentinel原理分析

1.概述 Sentinel(分布式系统的流量防卫兵)是阿里开源的一套用于服务容错的综合性解决方案; Sentinel是面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助您保障微服务的稳定性; 本质要做的就是两件事: …

第2部分 路由器基本配置

目录 2.1 路由器及IOS 简介 2.1.1 路由器简介 2.1.2 IOS 简介 2.1.3 CDP 协议介绍 2.2 路由器基本配置命令汇总 2.1 路由器及IOS 简介 2.1.1 路由器简介 路由器能起到隔离广播域的作用&#xff0c;还能在不同网络间转发数据包。路由器实际上是一台特殊用途的计算机&#…

[论文阅读] Curriculum Semi-supervised Segmentation

[论文地址] [代码] [MICCAI 19] Abstract 本研究调查了半监督CNN分割的课程式策略&#xff0c;它设计了一个回归网络来学习图像级信息&#xff0c;如目标区域的大小。这些回归被用来有效地规范分割网络&#xff0c;约束未标记图像的softmax预测&#xff0c;使其与推断的标签分…

【 第五章 多表关系,多表查询,内连接,外连接,自连接,联合查询,子查询】

第五章 多表关系&#xff0c;多表查询&#xff0c;内连接&#xff0c;外连接&#xff0c;自连接&#xff0c;联合查询&#xff0c;子查询 1.多表关系&#xff1a; &#xff08;1&#xff09;一对多(多对一) 案例: 部门 与 员工的关系 关系: 一个部门对应多个员工&#xff0c;…

【springMVC_11_SpringMVC拦截器_ 拦截器的介绍】

1.什么是拦截器 SpringMVC提供了Intercepter拦截器机制&#xff0c;类似于Servlet当中的Filter过滤器&#xff0c;用于拦截用户的请求并作出相应的处理&#xff0c;比如通过拦截器来进行用户权限验证或者用来判断用户是否登录。SpringMVC拦截器是可插拔式的设计&#xff0c;需…

Linux学习笔记(二)

命令 目录中找文件&#xff1a;find压缩tar&#xff1a;tar -cvf xxx.tar 文件解压缩tar&#xff1a;tar -xvf xxx.tar解压缩.gz文件&#xff1a;tar -zxvf xxx.tar.gz压缩.bz2文件&#xff1a;tar -jcvf xxx.tar.bz2解压到指定目录&#xff1a;tar -C 指定目录压缩zip&#xf…

CIFAR-10 数据集简介

文章目录CIFAR-10 简介CIFAR-10 简介 官网&#xff1a;http://www.cs.toronto.edu/~kriz/cifar.html CIFAR-10和CIFAR-100是8000个万小图像数据集的标记子集。它们由Alex Krizhevsky, Vinod Nair和Geoffrey Hinton收集。 CIFAR-10数据集包含60000张32x32彩色图像&#xff0c…

2183440-36-8,APN-C3-PEG4-alkyne 性能稳定功能连接体

一、APN-C3-PEG4-alkyne物理数据&#xff1a; CAS&#xff1a;2183440-36-8 | 中文名&#xff1a;APN-C3-四聚乙二醇-炔基 |英文名&#xff1a; APN-C3-PEG4-alkyne 结构式&#xff1a; 二、APN-C3-PEG4-alkyne试剂反应原理&#xff1a; 西安凯新生物科技有限公司供应的&…

企业上云原来如此简单,华为云带你体验云上风采

随着云计算、大数据、物联网和人工智能等技术的发展&#xff0c;云计算已经成为企业发展不可或缺的基础设施。企业对数字化转型的需求越来越迫切&#xff0c;但由于自身系统无法满足复杂业务上云需求&#xff0c;企业同时也面临着 IT系统复杂、运维复杂等诸多挑战。 基于此种情…

enumerate(),plt绘图,保存json,cv2.resize,baseline

1.enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列&#xff0c;同时列出数据和数据下标&#xff0c;一般用在 for 循环当中。 enumerate(sequence, [start0]) >>>seasons [Spring, Summer, Fall, Winter] >>> list(e…

为什么解决文档管理问题的数字化战略能够推动盈利增长

为什么解决文档管理问题的数字化战略能够推动盈利增长 每一天&#xff0c;世界都变得更加数字化&#xff0c;在我们的个人生活中&#xff0c;这种变化是持续的。 企业如何跟上发展的步伐&#xff1f;答案是&#xff1a;进行改变完成工作的方式、时间和地点&#xff0c;并在整个…

【学习笔记71】数据代理、回调函数和回调地域

一、数据代理 new Proxy(参数一: 代理那个对象)const obj {name: QF001,age: 18}const res new Proxy(obj, {get (target, p) {/*** target 当前代理的那个对象, 在当前案例中就是obj* p proxy会自动遍历对象, 拿到对象每一个key*/return target[p];},set (target, p,…

新课程发布 | 如何用 7 分钟击破 Serverless 落地难点?

当前&#xff0c;Serverless 覆盖的技术场景正在不断变广。Serverless 已在微服务、在线应用、事件驱动、任务处理等众多场景被验证且广泛应用 。当你想要部署一个网站时&#xff0c;需要自己购买服务器并花费时间去维护&#xff0c;造成资源浪费不说&#xff0c;还要耗费精力。…

2.2 Redis中SDS(简单动态字符串) 与C字符串的区别

引言: 根据传统&#xff0c;C语言使用长度N1的字符数组来表示长度为N的字符串&#xff0c;并且字符数组的最后一个元素总是空字符’\0’。 例如,图2-3 就展示了一个值为"Redis"的C字符串。 C语言使用这种简单的字符串表示方式&#xff0c;并不能满足Redis对字符串在…

计算机组成原理习题课第四章-3(唐朔飞)

计算机组成原理习题课第四章-3&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&…

Android面试题——高级开发面试题一

一 面试题概述 请简单的分析一下Android系统启动流程的原理&#xff1f;App启动状态有哪几种&#xff0c;各自的启动流程是怎么样的&#xff1f;当项目中遇到黑白屏问题&#xff0c;你有什么好的解决方案&#xff1f;如何查看方法内的耗时时间与方法分析&#xff1f;介绍一下A…