QueryWrapper常用方法

article/2025/10/22 20:41:00

QueryWrapper常用方法
在这里插入图片描述
MybatisPlus 使用QueryWrapper测试用例
一、ge、gt、le、lt、isNull、isNotNull

@Test
public void testQuery() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.isNull("name").ge("age", 12).isNotNull("email");int result = userMapper.delete(queryWrapper);System.out.println("delete return count = " + result);
}

二、eq、ne

@Test
public void testSelectOne() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("name", "Tom");Useruser = userMapper.selectOne(queryWrapper);//只能返回一条记录,多余一条则抛出异常System.out.println(user);
}

三、between、notBetween

@Test
public void testSelectCount() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.between("age", 20, 30);Integer count = userMapper.selectCount(queryWrapper); //返回数据数量System.out.println(count);
}

四、like、notLike、likeLeft、likeRight

@Test
public void testSelectMaps() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.select("name", "age").like("name", "e").likeRight("email", "5");List<Map<String, Object>> maps = userMapper.selectMaps(queryWrapper);//返回值是Map列表maps.forEach(System.out::println);
}

五、orderBy、orderByDesc、orderByAsc

@Test
public void testSelectListOrderBy() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.orderByDesc("age", "id");List<User>users = userMapper.selectList(queryWrapper);users.forEach(System.out::println);
}

六、插入insert

@Test
public void save() {User user = new User();user.setAge(23);user.setEmail("344");user.setName("test");// 1.使用service新增userService.save(user);// 2.使用mapper 新增userMapper.insert(user);
}

七、删除remove

@Test
public void delete() {// 根据条件删除userService.remove(Wrappers.<User>query().lambda().eq(User::getAge, 3));
}

八、修改update

@Test
public void update() {User user = new User();user.setAge(23);user.setEmail("344");user.setName("test333");UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();updateWrapper.eq("id","1");// 1.user 中封装修改的属性值, updateWrapper 中封装修改的条件参数值userService.update(user,updateWrapper);// 2.根据条件修改对应的参数属性值userService.update(Wrappers.<User>update().lambda().set(User::getName, "2").eq(User::getAge, 23));    // 3.判断参数是否为空,并进行修改     String name = "name";     userService.update(Wrappers.<User>update().lambda().set(StringUtils.isNotBlank(name),User::getName, name).eq(User::getAge, 23));
}

示例:


QueryWrapper<实体类> queryWrapper = new QueryWrapper<>();List<实体类> practice_log = aaScoreMapper.selectList(queryWrapper.eq("xxxx",jsonObject.getString("xxxx")).eq("yyyyy",jsonObject.getString("yyyy")).eq("uuuuu","uuuuu"));

子查询和嵌套查询

//根据id查询User user = userMapper.selectById(1);System.out.println("根据id查询" + user);//普通查询System.out.println("----- 普通查询 ------");List<User> plainUsers = userMapper.selectList(new QueryWrapper<User>().eq("role_id", 2L).orderByAsc("age"));List<User> lambdaUsers = userMapper.selectList(new QueryWrapper<User>().lambda().eq(User::getRoleId, 2L));System.out.println("查询默认未删除 deleted=0" + plainUsers);//子查询System.out.println("----- 子查询 ------");List<User> plainUsers2 = userMapper.selectList(new QueryWrapper<User>().inSql("role_id", "select id from role where id = 2"));System.out.println("子查询"+plainUsers2);List<User> lambdaUsers2 = userMapper.selectList(new QueryWrapper<User>().lambda().inSql(User::getRoleId, "select id from role where id = 2"));System.out.println("子查询"+lambdaUsers2);//带嵌套查询System.out.println("----- 带嵌套查询 ------");List<User> plainUsers3 = userMapper.selectList(new QueryWrapper<User>().nested(i -> i.eq("role_id", 2L).or().eq("role_id", 3L)).and(i -> i.ge("age", 20)));List<User> lambdaUsers3 = userMapper.selectList(new QueryWrapper<User>().lambda().nested(i -> i.eq(User::getRoleId, 2L).or().eq(User::getRoleId, 3L)).and(i -> i.ge(User::getAge, 20)));System.out.println("带嵌套查询"+plainUsers3);System.out.println("带嵌套查询"+lambdaUsers3);//自定义(sql注入)System.out.println("----- 自定义(sql注入) ------");List<User> plainUsers4 = userMapper.selectList(new QueryWrapper<User>().apply("role_id = 2"));

注意:

  1. 优先顺序:!>or>and所以andor在一起,先计算or,在这里有括号也没用。
  2. queryWrapper增加eq或者其他标签,会在后面增加,所以需要重新new一下。
  3. 子查询略复杂,请酌定使用。

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

相关文章

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;它是其它静态程序分析…

iOS围绕某点缩放或旋转的AnchorPoint的设定

经常会遇到需求&#xff0c;要求手势的缩放或者旋转操作&#xff0c;要求动作变化围绕某一个特定点&#xff0c;或者是两指的中心点&#xff0c;或者是某一个点。 这个问题首先要清晰的知道&#xff0c;iOS各个view的层次关系。特别是&#xff0c;要清除的知道&#xff0c;当前…

彻底理解CALayer的position与anchorPoint

引言 相信初接触到CALayer的人都会遇到以下几个问题&#xff1a; 为什么修改anchorPoint会移动layer的位置&#xff1f; CALayer的position点是哪一点呢? anchorPoint与position有什么关系&#xff1f; 我也迷惑过&#xff0c;找过网上的教程&#xff0c;大部分都是复制粘…

position和anchorPoint

本人录制技术视频地址&#xff1a; https://edu.csdn.net/lecturer/1899 欢迎观看。 一、理论概述 1.简单介绍 CALayer有2个非常重要的属性&#xff1a;position和anchorPoint property CGPoint position; 用来设置CALayer在父层中的位置 以父层的左上角为原点(0, 0) prop…

Ant Design - Anchor

Anchor锚点 此组件的属性有以下几点&#xff1a; 现在给出一份例子 其他属性都很简单就不多说了&#xff0c;主要我遇到的麻烦是 getContainer 属性 锚点是默认body滚动的&#xff0c;所以如果你滚动的区域是body就会看到锚点的小蓝点是会随内容滚动的&#xff0c;但是如果你…

Anchor Point

On default, CCNode’s anchor point is (0, 0), which is at the left-bottom point. CCSprite’s anchor point is (0.5, 0.5), which is at the center. 如果你把一个CCSprite作为child加入到CCNode中&#xff0c;CCNode的anchor point不会对sprite的位置有影响&#xff0c;…

【Cocos2d-x 3.0学习笔记】 AnchorPoint 和Position 关系

先不多说&#xff0c;上两张图片&#xff1a; 解释一下上面图片的意思&#xff1a; 描点就是图片中红点的位置。setAnchorPoint的取值范围0&#xff5e;1&#xff0c;距离设置的是一张图片 setAnchorPoint(Point(0,0))表示在图片左下角, setAnchorPoint(Point(1,1))表示在图片…