MyBatis-plus笔记——条件构造器和常用接口

wapper介绍


图片-ygixoeru.png

  • Wapper:条件构造抽象类
    • AbstractWapper:用于查询条件封装,生成 sql 的 where 条件
      • QueryWrapper:查询条件封装
      • UpdateWrapper:Update 条件封装
      • AbstractLambdaWrapper:使用Lambda语法
        • LambdaQueryWrapper:使用Lambda语法使用的查询Wrapper
        • LambdaUpdateWrapper:Lambda 更新封装Wrapper

封装类


查询封装类使用示例

@Test  
public void test01() {  
    // 查询用户名包含a,年龄在20~30,邮箱信息不为null  
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();  
    queryWrapper.like("user_name", "a")  
            .between("age",20, 30)  
            .isNotNull("email");  
    userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));  
}

@Test  
public void test02() {  
    // 查询用户信息,按照年龄降序排序,若年龄相同,则按id升序排序  
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();  
    queryWrapper.orderByDesc("age").orderByAsc("id");  
    userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));  
}
select字句封装

当需要查询指定字段时可以使用 select

@Test  
public void test06 () {  
    // 查询用户的用户名、年龄、邮箱信息  
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();  
    queryWrapper.select("user_name", "age", "email");  
    userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));  
}
子查询封装
@Test  
public void test07() {  
    // 查询 uid 小于等于100的用户信息  
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();  
    queryWrapper.inSql("uid", "select uid from t_user where uid <= 100");  
    userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));  
}
删除使用示例
@Test  
public void test03() {  
    // 删除邮箱地址为 null 的用户信息  
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();  
    queryWrapper.isNull("email");  
    int result = userMapper.delete(queryWrapper);  
    log.info("删除了:{}条数据", result);  
}
修改使用示例
@Test  
public void test04() {  
    // 将 (年龄大于20并且用户名中包含有a)或邮箱为null的用户信息修改  
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();  
    queryWrapper.gt("age", 20)  
            .like("user_name", "a")  
            .or()  
            .isNull("email");  
    User user = new User();  
    user.setName("小明");  
    user.setEmail("123@qq.com");  
    int result = userMapper.update(user, queryWrapper);  
    log.info("修改了:{}条数据", result);  
}
condition组装条件

通过 condition 条件,可以判断是否要使用该条件作为SQL语句

@Test  
public void test10() {  
    String username = "a";  
    Integer ageBegin = null;  
    Integer ageEnd = 30;  
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();  
    queryWrapper.like(StringUtils.isNotBlank(username), "user_name", username) // 判断username 是否不为 空 null 空白符  
            .ge(ageBegin != null, "age", ageBegin) // 判断ageBegin 是否不为 空 null  
            .le(ageEnd != null, "age", ageEnd); // 判断ageEnd 是否不为 空 null  
    userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));  
}

修改封装类使用示例

@Test  
public void test08() {  
    // 将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改  
    UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();  
    updateWrapper.like("user_name", "a")  
            .and(i -> i.gt("age", 20).or().isNull("email"));  
    updateWrapper.set("user_name", "小黑").set("email", "123@qq.com");  
    userMapper.update(null, updateWrapper);  
}

Lambda封装类

LambdaQueryWrapper
@Test  
public void test11() {  
    String username = "a";  
    Integer ageBegin = null;  
    Integer ageEnd = 30;  
    LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();  
    queryWrapper.like(StringUtils.isNotBlank(username), User::getName, username)  
            .ge(ageBegin != null, User::getAge, ageBegin)  
            .le(ageEnd != null, User::getAge, ageEnd);  
    userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));
LambdaUpdateWrapper
@Test  
public void test12() {  
    // 将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改  
    LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();  
    updateWrapper.like(User::getName, "a")  
            .and(i -> i.gt(User::getAge, 20).or().isNull(User::getEmail));  
    updateWrapper.set(User::getName, "小黑").set(User::getEmail, "123@qq.com");  
    userMapper.update(null, updateWrapper);  
}

具体类方法手册

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

五一假期Llama 3之魔改不完全攻略(Part 2)

2024年4月18日&#xff0c;Meta AI 正式宣布推出 Llama 3&#xff0c;这标志着开源大型语言模型&#xff08;LLM&#xff09;领域的又一重大进步。如同一颗重磅炸弹&#xff0c; Llama 3 以其卓越的性能和广泛的应用前景&#xff0c;预示着 AI 技术的新时代。 目前开源的是Lla…

Agent AI智能体:机器学习与自我优化的奇妙之旅

文章目录 &#x1f4d1;前言一、Agent AI智能体的基本概念二、Agent AI智能体的技术进步2.1 机器学习技术2.2 自适应技术2.3 分布式计算与云计算 三、Agent AI智能体的知识积累3.1 知识图谱3.2 迁移学习 四、Agent AI智能体的挑战与机遇4.1 挑战4.2 机遇 小结 &#x1f4d1;前言…

ASP.NET网络商店设计与实现

摘 要 本文首先系统地研究了开发电子商务网站的背景和意义&#xff0c;分析了当今B2C电子商务交易的网站特点和共性&#xff0c;从而得出设计本网站的思路和方法。接着介绍了实现系统开发的ASP.NET和IIS5.0环境&#xff0c;数据库用ACCESS实现。同时简要介绍了以上工具的功能…

手拉手springboot整合kafka

前期准备安装kafka 启动Kafka本地环境需Java 8以上 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 Kafka启动方式有Zookeeper和Kraft&#xff0c;两种方式只能选择其中一种启动&#xff0c;不能同时使用。 Kafka下载…

状态模式

文章目录 1.UML类图2.状态基类3.状态实现类3.状态机管理类使用示例 1.UML类图 2.状态基类 public abstract class State {public string? Name { get; set; }public StateMachine? StateMachine {get; set;}public abstract void Exit();public abstract void Enter(); }3.…

Devops部署maven项目

这里讲下应用k8s集群devops持续集成部署maven项目的流程。 failed to verify certificate: x509: certificate signed by unknown authority 今天在执行kubectl get nodes的时候报的证书验证问题&#xff0c;看了一圈首次搭建k8s的都是高频出现的问题。 couldn’t get curren…

输入N,从1~N中挑出若干对数字,比如(a,b),(c,d)

题目: 输入N,从1~N中挑出若干对数字,比如(a,b),(c,d) 规定这个数对的value为两数之和,比如(a,b)的value为ab 现在从1~N中挑出若干个数对,他们满足: 每个数字只能被挑出一次 每个数对的value都不相等 每个数对的value都小于等于N 求:对于给定的N,能挑出这样的数对的最大个数max …

2024年Q1葡萄酒行业线上电商(京东天猫淘宝)销售排行榜

五一聚餐不可缺少饮品——葡萄酒。鲸参谋监测的线上电商平台&#xff08;某东&#xff09;Q1季度葡萄酒行业销售数据已揭晓&#xff01; 从鲸参谋的数据中&#xff0c;我们可以明显看到今年Q1季度在线上电商平台&#xff08;某东&#xff09;葡萄酒行业的销售情况呈现出积极的…

【C++】STL使用详解

文章目录 前言1. string类1.1 string类对象的常见构造1.2 string类对象的容量操作1.3 string类对象的访问及遍历操作1.4 string类对象的修改操作1.5 string类非成员函数 2. vector2.1 vector的介绍2.2 vector的使用2.3 vector的迭代器2.4 vector空间容量操作2.5 vector增删查改…

笨蛋学C++之 C++连接数据库

笨蛋学C 之 VS2019使用C连接数据库 创建数据库SQL语句VS2019选择空项目&#xff0c;点击下一步创建输入项目名称&#xff0c;点击创建创建成功点击新建项创建源文件因为mysql是64位&#xff0c;此时的c项目是86位&#xff0c;所以这里需要将项目修改为x64位点击项目 -> 0501…

基于Python的人脸识别系统设计与实现(论文+源码)_kaic

基于Python的人脸识别系统设计与实现 摘 要 随着人工智能的发展,人脸识别系统在我们的生活中越来越被广泛应用。人脸识别系统是指能够从数字图像或视频源中识别人的技术。人脸识别系统可以通过多种方法工作&#xff0c;但是&#xff0c;它们通常是通过将给定图像中的面部特征与…

基于Vue Router和element-ui的LayOut

一、展示 二、代码 app.vue <template><div id"app"><el-container style"border: 1px solid #eee; height: 100vh"><el-aside v-bind:width"asideWidth" style"background-color: rgb(48, 65, 86);"><…

基于ROS从零开始构建自主移动机器人:仿真和硬件

书籍&#xff1a;Build Autonomous Mobile Robot from Scratch using ROS&#xff1a;Simulation and Hardware 作者&#xff1a;Rajesh Subramanian 出版&#xff1a;Apress 书籍下载-《基于ROS从零开始构建自主移动机器人&#xff1a;仿真和硬件》您将开始理解自主机器人发…

ip地址与硬件地址的区别是什么

在数字世界的浩瀚海洋中&#xff0c;每一台联网的设备都需要一个独特的标识来确保信息的准确传输。这些标识&#xff0c;我们通常称之为IP地址和硬件地址。虽然它们都是用来识别网络设备的&#xff0c;但各自扮演的角色和所处的层次却大相径庭。虎观代理小二将带您深入了解IP地…

karpathy make more -- 4

1 Introduction 这个部分要完成一个网络的模块化&#xff0c;然后实现一个新的网络结构。 2 使用torch的模块化功能 2.1 模块化 将输入的字符长度变成8&#xff0c;并将之前的代码模块化 # Near copy paste of the layers we have developed in Part 3# -----------------…

爬虫学习:基本网络请求库的使用

目录 一、urllib网络库 1.urlopen()方法 2.request方法 二、requests网络请求库 1.主要方法 2.requests.get()和requests.post() 一、urllib网络库 1.urlopen()方法 语法格式&#xff1a; urlopen(url,data,timeout,cafile,capath,context) # url:地址 # data:要提交的数据…

[华为OD]C卷 机场航班调度 ,XX市机场停放了多架飞机,每架飞机都有自己的航班号100

题目&#xff1a; XX市机场停放了多架飞机&#xff0c;每架飞机都有自己的航班号CA3385, CZ6678, SC6508 等&#xff0c;航班号的前2个大写字母&#xff08;或数字&#xff09;代表航空公司的缩写&#xff0c;后面4个数字代表航班信息。 但是XX市机场只有一条起飞用跑道&am…

uniapp源码+计划任务 台股平台源码 新股申购 分类后台控制

台股平台源码集成了新股申购与折扣申购功能&#xff0c;结合了计划任务和UniApp源码&#xff0c;为用户提供了一个全面的股票交易解决方案。 经过初步测试&#xff0c;系统可正常运行。测试时没有配置计划任务和WebSocket 。有兴趣的自行研究。 本系统基于PHP 7.3版本开发&am…

【记录】Springboot项目集成docker实现一键部署

公司管理平台完成后&#xff0c;为了方便其他不懂开发的同事部署和测试&#xff0c;集成docker进行一键部署&#xff0c;也为后面自动化部署做准备。本文做个简单记录。 1、安装docker yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/cont…

maven插件:dockerfile-maven-plugin和docker-maven-plugin

Maven插件dockerfile-maven-plugin和docker-maven-plugin都是为Java开发人员提供了一种便捷的方式&#xff0c;通过Maven构建流程来自动化创建、管理和推送Docker镜像。虽然它们有着相似的目标&#xff0c;即集成Docker与Maven项目&#xff0c;但这两个插件在实现细节、功能侧重…
最新文章