MybatisPlus学习 条件构造器Wrapper方法详解

article/2025/10/22 20:42:48

目录

1、条件构造器

2、AbstractWrapper

2.1、eq、allEq、ne、

2.2、gt、ge、lt、le

2.3、between、notBetween

2.4、like、notLike、likeLeft、likeRight

2.5、isNull、isNotNull

2.6、in、notIn

2.7、inSql、notInSql

2.8、or、and

2.9、exists、notExists

2.10、orderBy、orderByAsc、orderByDesc

3、QueryWrapper

3.1、select指定查询的列

 QueryWrapper更新操作

 3.2lambda

4、UpdateWrapper

4.1、 set

UpdateWrapper更新操作:

4.2 setSql

4.3lambda

 5. LambdaQueryWrapper

6. LambdaUpdateWrapper


1、条件构造器

说明:

    以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中
    以下代码块内的多个方法均为从上往下补全个别boolean类型的入参,默认为true
    以下出现的泛型Param均为Wrapper的子类实例(均具有AbstractWrapper的所有方法)
    以下方法在入参中出现的R为泛型,在普通wrapper中是String,在LambdaWrapper中是函数(例:Entity::getId,Entity为实体类,getId为字段id的getMethod)
    以下方法入参中的R column均表示数据库字段,当R具体类型为String时则为数据库字段名(字段名是数据库关键字的自己用转义符包裹!)!而不是实体类数据字段名!!!,另当R具体类型为SFunction时项目runtime不支持eclipse自家的编译器!!!
    以下举例均为使用普通wrapper,入参为Map和List的均以json形式表现!
    使用中如果入参的Map或者List为空,则不会加入最后生成的sql中!!!

2、AbstractWrapper

说明:

QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为

给之后测试提供参考

    注意:7号数据已经被逻辑删除了

2.1、eq、allEq、ne、

eq:等于,参数一个条件

allEq:全等于,参数是一个map集合,可以一次匹配多个条件,

ne:不等于

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


2.2、gt、ge、lt、le

    gt:大于,ge:大于等于,lt:小于,le:小于等于

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


2.3、between、notBetween

    between:在值1和值2之间,notBetween:不在值1和值2之间

在这里插入图片描述
在这里插入图片描述



2.4、like、notLike、likeLeft、likeRight

    like:’%值%’,notLike:’%值%’,likeLeft:’%值’,likeRight:'值%'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



2.5、isNull、isNotNull

    isNull:字段 IS NULL,isNotNull:字段 IS NOT NULL

sNull:字段 IS NULL,isNotNull:字段 IS NOT NULL

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


2.6、in、notIn

    in:字段 IN (v0, v1, …),notIn:字段 NOT IN (value.get(0), value.get(1), …)

在这里插入图片描述
在这里插入图片描述



2.7、inSql、notInSql

    inSql:字段 IN ( sql语句 ),notInSql:字段 NOT IN ( sql语句 )

在这里插入图片描述

在这里插入图片描述



2.8、or、and

or:拼接 OR,

and 嵌套

    注意事项:
    主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 

  • OR 嵌套
  • 例: or(i -> i.eq("name", "李白").ne("status", "活着"))等同于or (name = '李白' and status <> '活着')
  • AND 嵌套
  • 例: and(i -> i.eq("name", "李白").ne("status", "活着"))等同于and (name = '李白' and status <> '活着')

2.9、exists、notExists

    exists:拼接 EXISTS ( sql语句 ),notExists:拼接 NOT EXISTS ( sql语句 )

在这里插入图片描述
在这里插入图片描述


2.10、orderBy、orderByAsc、orderByDesc

orderBy:指定是否排序,升序还是降序  

orderByAsc:排序:ORDER BY 字段, … ASC,orderByDesc:排序:ORDER BY 字段, … DESC

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、QueryWrapper

    说明:

          继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
    及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取

3.1、select指定查询的列

select(String col1,String col2.....)

select(String... sqlSelect)
select(Predicate<TableFieldInfo> predicate)
select(Class<T> entityClass, Predicate<TableFieldInfo> predicate)
  • 设置查询字段

    说明:

    以上方法分为两类.
    第二类方法为:过滤查询字段(主键除外),入参不包含 class 的调用前需要wrapper内的entity属性有值! 这两类方法重复调用以最后一次为准

  • 例: select("id", "name", "age")
  • 例: select(i -> i.getProperty().startsWith("test"))
  • 使用同全查询一样,只是返回的列不同。

 QueryWrapper更新操作

    @Testpublic void updateQueryWrapper(){User_plus user=new User_plus();//设置更新字段user.setName("张飞");QueryWrapper<User_plus> queryWrapper=new QueryWrapper<>();//设置更新条件queryWrapper.eq("id",1);int i = user_plusDAO.update(user,queryWrapper);System.out.println(i);}

 3.2lambda

QueryWrapper中是获取LambdaQueryWrapper

        LambdaQueryWrapper<User_plus> lambdaQueryWrapper=queryWrapper.lambda();

4、UpdateWrapper

说明:

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取!

4.1、 set

set(String column, Object val)
set(boolean condition, String column, Object val)
  • SQL SET 字段
  • 例: set("name", "老李头")
  • 例: set("name", "")--->数据库字段值变为空字符串
  • 例: set("name", null)--->数据库字段值变为null

UpdateWrapper更新操作:

    @Testpublic void update(){User_plus user=new User_plus();UpdateWrapper<User_plus> updateWrapper=new UpdateWrapper<>();//设置更新字段updateWrapper.set("name","张飞");//设置更新条件updateWrapper.eq("id",1);int i = user_plusDAO.update(user,updateWrapper);System.out.println(i);}

4.2 setSql

setSql(String sql)
  • 设置 SET 部分 SQL
  • 例: setSql("name = '老李头'")

4.3lambda

UpdateWrapper中是获取LambdaUpdateWrapper

        LambdaUpdateWrapper<User_plus> lambdaUpdateWrapper=updateWrapper.lambda();

 5. LambdaQueryWrapper

利用lambda表达式的一个用法(类::静态方法)获得属性对应自带你们,可防止写错字段名

    @Testpublic void selectList4(){//多条件拼接,有条件就拼接String name="";Integer agebegin = 20;Integer ageend=21;LambdaQueryWrapper<User_plus> lambdaQueryWrapper=new LambdaQueryWrapper<>();//利用lambda表达式的一个用法(类::静态方法)获得属性lambdaQueryWrapper.like(StringUtils.isNotBlank(name),User_plus::getName,name).ge(agebegin!=null,User_plus::getAge,agebegin).le(ageend!=null,User_plus::getAge,agebegin);List<User_plus> userlist = user_plusDAO.selectList(lambdaQueryWrapper);userlist.forEach(System.out::println);}

6. LambdaUpdateWrapper

利用lambda表达式的一个用法(类::静态方法)获得属性对应自带你们,可防止写错字段名

    @Testpublic void updateWrapper1(){User_plus user=new User_plus();LambdaUpdateWrapper<User_plus> lambdaUpdateWrapper=new LambdaUpdateWrapper<>();//设置更新字段lambdaUpdateWrapper.set(User_plus::getName,"张飞");//设置更新条件lambdaUpdateWrapper.eq(User_plus::getId,1);int i = user_plusDAO.update(user,lambdaUpdateWrapper);System.out.println(i);}


http://chatgpt.dhexx.cn/article/RAhAEU2y.shtml

相关文章

MybatisPlus--QueryWrapper

QueryWrapper wrapper介绍 Wrapper &#xff1a; 条件构造抽象类&#xff0c;最顶端父类 AbstractWrapper &#xff1a; 用于查询条件封装&#xff0c;生成 sql 的 where 条件 QueryWrapper &#xff1a; Entity 对象封装操作类&#xff0c;不是用lambda语法UpdateWrapper &…

Gradle基础:9:wrapper的使用

Gradle Wrapper是gradle建议的使用方式&#xff0c;这篇文章将会结合具体的例子来说明一下如何使用。 Gradle Wrapper Gradle Wrapper实际上就是一个脚本&#xff0c;使用它可以下载和使用指定版本的gradle&#xff0c;根据需要进行在使用之前进行下载&#xff0c;有效避免本…

spring boot之maven-wrapper

Spring Boot有很多功能特性值得借鉴和学习&#xff0c;很多玩Spring Boot的人知道不需要安装Tomcat很方便&#xff0c;其实并没有发现Maven也是不需要提前安装。它这样做的好处在于解决了开发环境maven版本不一致导致的各种问题&#xff0c;spring boot中集成了maven-wrapper的…

dubbo之SPI Wrapper分析

写在前面 本文需要dubbo SPI的简单基础知识&#xff0c;对dubbo SPI不了解的朋友可以参考dubbo之SPI分析 。 源码&#xff01;&#xff01;&#xff01;。 在dubbo之SPI分析 文章中我们分析了SPI机制&#xff0c;其中有种SPI是一个Wrapper类的情况&#xff0c;本文一起来看下Wr…

MyBatis与QueryWrapper

目录 一、MyBatis标签 1.2 if标签 1.2 foreach标签 1.3 sql标签 1.4 where标签 1.5SQL片段的使用 二、条件构造器 2.1QueryWrapper 2.1.1查询 2.1.2 查询列2 2.1.2 删除 2.1.3子查询 2.1.4组装查询条件 2.1.5组装排序条件 2.1.6组装删除条件 2.1.7条件的优先级 2.1.8 子…

QueryWrapper常用方法

QueryWrapper常用方法 MybatisPlus 使用QueryWrapper测试用例 一、ge、gt、le、lt、isNull、isNotNull Test public void testQuery() { QueryWrapper<User> queryWrapper new QueryWrapper<>();queryWrapper.isNull("name").ge("age", 12)…

java service wrapper 中文_Java Service Wrapper实践

很久前就使用JAVA写了一个后台服务器,基于MINA框架的。并且一直部署运行于服务器中,当然有一个黑框框。 就正常运行而言,此种运行方式没有任何问题。 但是就这运行期间出现的一些问题: 1,服务器问题重启后,每次都要登录远程将服务器打开,即使我已经配置了开机自启动,但…

Gradle Wrapper 详解

Gradle Wrapper 详解 我们介绍了 Android 项目的目录及 Gradle 配置&#xff0c;我们提到有个目录是/gradle/wrapper。今天这篇文章我们来学习 Gradle Wrapper。通过这篇文章我们将了解什么是 Gradle Wrapper&#xff1f;为什么需要用 Gradle Wrapper&#xff1f;以及 Gradle …

wrapper java 64_Wrapper配置详解及高级应用

将一个简单的程度如HelloWorld 的应用包装秤Wrapper 服务并不复杂&#xff0c;甚至可以认为非常简单。但是实际项目应用过程中我们的程序一般较庞大&#xff0c;运行环境也较复杂。 通过Wrapper 配置文件的分析与配置进一步了解构建Wrapper 服务需要注意的关键点及重要部分。 首…

RDP Wrapper

说到要在非Windows Server版本上实现多用户远程桌面连接 &#xff0c;我们都知道一个大名鼎鼎的软件RDP Wrapper Library&#xff0c;它是开源的&#xff0c;所有秘密作者都没有保留&#xff0c;所有问题全部在GitHub上面写的清清楚楚&#xff0c;在这里感谢这些伟大的人&#…

wrapper后台启动java程序

文章目录 1&#xff0c;下载wrapper2&#xff0c;使用wrapper后台启动java程序2.1&#xff0c;编写java样例程序2.2&#xff0c;配置wrapper2.3&#xff0c;拷贝启动脚本2.4&#xff0c;启动服务 1&#xff0c;下载wrapper 下载地址&#xff1a;https://wrapper.tanukisoftwar…

Java常用类-包装类(Wrapper)简单介绍

目录 前言1、包装类(Wrapper) 前言 本文主要介绍java中的包装类 1、包装类(Wrapper) Java是面向对象的编程语言&#xff0c;但它也包含了8种基本数据类型&#xff0c;这8种基本数据类型不支持面向对象的编程机制&#xff0c;基本数据类型的数据也不具备“对象”的特性&#…

强大的wrapper

最近在看大数据和容器相关的东西&#xff0c;发现有一个模式被反复使用到&#xff0c;关键是被用的很恰当且优雅&#xff0c;并能在这些关键技术中都发挥着至关重要的核心作用。我想你已经猜到了&#xff0c;他就是Eminem——强大的rapper——哦&#xff0c;不对&#xff0c;是…

mybatis-plus中wrapper的用法(详细)

用到了wrapper&#xff0c;ge、le、ne、eq等的用法&#xff0c;及多表查询自写sql整理资料记录一下&#xff0c;以备后续复习。 目录------------&#xff08;可点击相应目录直接跳转&#xff09; 一、条件构造器关系介绍 条件构造器关系介绍 &#xff1a; wapper介绍 &…

锚点(anchorPoint)

转载请说明出处&#xff0c;谢谢。 原文出处&#xff1a;点击打开链接 今天研究了一下关于layer的anchorPoint问题。 附图&#xff1a; 原文出处&#xff1a;点击打开链接 位置坐标 position&#xff0b;anchorPoint&#xff08;左下角0,0原点坐标系&#xff09;。 要确…

cocos2d-x中的锚点(AnchorPoint)理解

锚点的定义 锚点是指节点在进行形状变换、位置变动时依据的基准点。可以想象为钉在墙上用于固定纸张的小图钉&#xff0c;或者公告栏上用于固定纸张用的围棋状的小磁粒。当对某个节点调用setPosition时&#xff0c;cocos2d-x即会将其锚点移动到相应位置&#xff1b;当对节点进行…

cocos2d-x3.2总结(一)Position和AnchorPoint的关系

当cocos2d-x引擎需要绘图时&#xff0c;就需要Position和AnchorPoint等属性。例如&#xff1a;在创建一个Sprite时&#xff0c;要设置Sprite的Position&#xff0c;而我们常常没有设置AnchorPoint&#xff0c;这是因为精灵的AnchorPoint默认值为&#xff08;0.5,0.5&#xff09…

Anchor3

这里介绍如何修改 Anchor 的尺寸来提高小目标的检测效果,算法tricks优化小目标检测 修改 Anchor 尺寸 在实际的应用场景中&#xff0c;我们按照 MS COCO 标准中把大小不大于 32x32 或者占原始图片比率不足 0.01 的目标物体定义为一个小目标物体。 在使用 Anchor 的检测算法&…

ios-anchorPoint、position理解

anchorPoint(锚点)是layer的一个属性&#xff0c;下面我们来看看其对view的影响&#xff0c;本文主要通过图片方式展现&#xff1a; 锚点用单位坐标来描述也就是图层的相对坐标。在苹果文档中说明左下是(0,0),右上是&#xff08;1&#xff0c;1&#xff09;&#xff0c;mac系统…

Anderson‘s pointer analysis

本文是垃圾文章&#xff0c;请直接学习其它资料 南京大学《软件分析》课程08&#xff08;Pointer Analysis&#xff09;https://www.cs.cmu.edu/~aldrich/courses/15-819O-13sp/resources/pointer.pdf 指针分析 指针分析是一类特殊的数据流问题&#xff0c;它是其它静态程序分析…