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.mzph.cn/news/831226.shtml

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

相关文章

IDEA启动项目报错:Error running ‘‘: Command line is too long.

1、在workspace.xml 2、 在标签 <component name"PropertiesComponent"> 添加 <property name"dynamic.classpath" value"true" />

golang:atomic.Pointer

1.atomic.Pointer atomic.Pointer 是 Go 语言标准库 sync/atomic 提供的一种原子指针类型。它用于在并发环境中对指针进行原子操作&#xff0c;以确保线程安全性。 什么是原子操作&#xff1f;golang 的原子操作 在多线程编程中&#xff0c;当多个线程同时访问和修改同一个…

天地图路径规划功能实现

目录 1、天地图路径规划2、路径规划3、参数说明4、Demo 1、天地图路径规划 天地图Web服务API为用户提供HTTP/HTTPS接口&#xff0c;即开发者可以通过这些接口使用各类型的地理信息数据服务&#xff0c;可以基于此开发跨平台的地理信息应用。 Web服务API对所有用户开放。使用本…

全栈开发之路——前端篇(3)setup和响应式数据

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 本文为该系列的第三篇&#xff0c;主要讲述Vue核心的setup语法&#xff0c;同时讲解再使用了setup后如何设置响应式数据。 辅助…

Linux专栏05:Linux基本指令之目录处理指令

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Linux专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Linux基本指令之目录处理指令 编号&#xff1a;05 文章目录 Linux基…

设置UIProgressView的样式

UIProgressView是UIKit框架中的一个控件&#xff0c;用于显示任务的完成进度。你可以使用UIProgressView来展示任务的完成情况&#xff0c;例如下载文件、上传数据等。 要设置UIProgressView的样式&#xff0c;包括粗细、颜色等&#xff0c;你可以使用UIProgressView的一些属性…

在springboot项目中实现将上传的jpg图片类型转为pdf并保存到本地

前言&#xff1a;前端使用uniapp中的uni.canvasToTempFilePath方法将画板中的内容保存为jpg上传至后端处理 uni.canvasToTempFilePath({canvasId: firstCanvas,sourceType: [album],fileType: "jpg",success: function (res1) {let signature_base64 res1.tempFile…

发表博客之:weight only int8 详细讲解,小白都可以看得懂,不懂请来打我!

发表博客之&#xff1a;weight only int8 详细讲解&#xff0c;小白都可以看得懂&#xff0c;不懂请来打我&#xff01; 考虑一个模型中有一个Gemm Op&#xff0c;有两个输入&#xff0c;假设都是fp16数据类型吧&#xff01; input0是 [ M , K ] [M,K] [M,K],input1是 [ K , N…

Linux的基础IO:文件描述符 重定向本质

目录 前言 文件操作的系统调用接口 open函数 close函数 write函数 read函数 注意事项 文件描述符-fd 小补充 重定向 文件描述符的分配原则 系统调用接口-dup2 缓冲区 缓冲区的刷新策略 对于“2”的理解 小补充 前言 在Linux中一切皆文件&#xff0c;打开文件…

05 华三交换机原理

交换机的工作原理(第三十课)-CSDN博客 1 华三交换机原理 交换机是一种网络设备,用于在局域网(LAN)中实现数据帧的转发和过滤。其工作原理基于MAC地址表,它可以学习、过滤和转发帧到正确的端口。以下是交换机的基本工作原理: 1. 学习阶段: - 当设备首次发送数据包时,…

Leetcode 108.将有序数组转换为二叉搜索树

题目描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null,-3,null,9] 也将被…

机器学习-什么是 PCA?

一、PCA是什么&#xff1f; PCA 即主成分分析&#xff08;Principal Component Analysis&#xff09;哦&#xff01;它是一种统计分析方法&#xff0c;主要用于掌握事物的主要矛盾。PCA能从多元事物中解析出主要影响因素&#xff0c;揭示事物的本质&#xff0c;简化复杂问题。…

改变 centos yum源 repo

centos 使用自带的 repo 源 速度慢&#xff0c;可以改为国内的&#xff0c;需要改两个地方 centos7.repo CentOS-Base.repo 首先备份/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载对应版本repo文件…

ICMP详解

3 ICMP ICMP&#xff08;Internet Control Message Protocol&#xff0c;因特网控制报文协议&#xff09;是一个差错报告机制&#xff0c;是TCP/IP协议簇中的一个重要子协议&#xff0c;通常被IP层或更高层协议&#xff08;TCP或UDP&#xff09;使用&#xff0c;属于网络层协议…

python验证输入的IP地址是否正确

目录 一.前言 二.代码 三.代码分析 一.前言 IP是一组规则,它定义了计算机网络中的设备如何通信。它是一套协议,规定了如何将数据包从一台设备发送到另一台设备。 二.代码 cause = True # 设置判断网址是否正确的标志变量为真 ip …

Uniapp好看登录注册页面

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

VUE2从入门到精通(二)

118、ref引用 【1】JQuery里面的$("#app")。vue mv vm 【2】在vue中&#xff0c;程序员不需要操作dom。程序员只需要维护好数据即可&#xff08;数据驱动视图&#xff09;。所以在vue下&#xff0c;强烈不建议使用jquery&#xff01;&#xff01;&#xff01; 【3】假…

(汇总)vue中在不同页面之间-4种传递参数的方式

Vue项目页面间传递参数和参数存储有很多种&#xff0c;常见的&#xff1a; &#xff08;参考链接&#xff1a;www.qinglite.cn/doc/4603647… url里加参数&#xff0c;比如&#xff1a;/find?idxxx&#xff0c;或/find/xxx&#xff0c;适合少量数据&#xff0c;优点是刷新页面…

大历史下的 tcp:恼人的 timewait

tcp timewait 是个恼人的状态&#xff0c;它的恶心自两类恶心的询问&#xff0c;oncall 和面试。大概诸如 “如何减少 timewait socket 数量”&#xff0c;“tw_reuse 和 tw_recycle …”&#xff0c;如果只为应用&#xff0c;用 reset 关连接就够了。 timewait 状态的根本目的…

4G+北斗太阳能定位终端:一键报警+倾覆报警 双重保障船舶安全

海上作业环境复杂多变&#xff0c;海上航行充满了各种不确定性和风险&#xff0c;安全事故时有发生&#xff0c;因此海上安全与应急响应一直是渔业和海运行业关注的重点。为了提高海上安全保障水平&#xff0c;4G北斗太阳能定位终端应运而生&#xff0c;它集成了一键报警和倾覆…