MyBatis-Plus中更新操作的两种实现
作者:心态还需努力呀 发布时间:2022-06-24 03:09:14
前言
本文学习MP中的更新操作方法,带大家一起查看源码,了解更新操作的方法。学会熟练地去运用更新方法解决自己在项目中的问题。
一、通过id更新
1.查看mapper继承的BaseMapper下通过id更新的方法updateById可看出参数传入的是一个对象。并且返回的是一个int类型的值, 该值的含义就是受影响的行数。为0表示更新失败,作为以后开发中要处理的逻辑有用处。如下图所示:
2.编写测试类testUpdateById方法,在方法中通过调用MP的updateById对数据库表中的名字和邮箱进行修改。
//测试通过id更新数据
@Test
public void testUpdateById(){
User user=new User();
user.setUserId(1);//更新id=?的数据
//更新内容,可多个
user.setUserName("心态");
user.setUserEmail("3052273528@qq.com");
int result = userMapper.updateById(user);
System.out.println(result);
}
3.运行上面的方法得出结果,查看生成的sql语句:如下图所示,可看到sql语句把表中的user_id字段作为条件,对user表中的user_name、user_email字段的值进行修改。
4.查询修改结果调用通过id查询的方法查询user_id=1的表信息是否发生改变。
//测试通过id查询
@Test
public void testSelectById(){
User user = userMapper.selectById(1L);
System.out.println(user);
}
效果如下图所示,可看到用户名和邮箱已经变为了修改后的值,修改成功!:
二、条件更新
在做条件更新时我们要用到MP中的update方法,先来看下源码:要传入2个参数,第一个是实体,就是要进行修改的数据。第二个传入的是Wrapper是要进行更新的条件。
int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);
2.1 使用QueryWrapper进行条件更新
我们先测试QueryWrapper对数据进行条件更新:
在测试类中编写testUpdateQw()方法,修改用户状态为1的用户名改为(心态还需努力呀~)和邮箱改为(2132444@qq.com)。
我们把要更新的数据放到User类里,条件就需要用到QueryWrapper,首先需要new出来,然后用.eq调用方法,eq方法里也有两个参数,第一个是表字段名,第二个是该字段的值。如下图所示:
然后即可写出该方法的内容:
//根据条件更新QueryWrapper用法
@Test
public void testUpdateQw(){
User user=new User();
user.setUserName("心态还需努力呀~");
user.setUserEmail("2132444@qq.com");
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper.eq("user_status","1");
int result= userMapper.update(user, wrapper);
System.out.println("result=> "+result);
}
查看运行结果,通过生成的sql代码,可看出和我们编写的代码一样,条件是user_status字段,要修改的字段是user_name、user_email值。
注:再次强调eq方法中的第一个参数是数据库表的字段,而不是属性名。
2.2 使用UpdateWrapper进行条件更新
这次我们测试UpdateWrapper对数据进行条件更新:
在测试类中编写testUpdateUw()方法,修改用户状态为1的用户名改为(心态)和邮箱改为(8888888@qq.com)。
要修改的数据和条件都要放到UpdateWrapper,首先需要new出来,然后用.set调用方法,set方法里也有两个参数,第一个是表字段名,第二个是该字段的值。如下图所示:
但在写update参数时,因User设置值的功能被UpdateWrapper实现了,所以第一个参数为null即可,代码如下:
//根据条件更新UpdateWrapper用法
@Test
public void testUpdateUw(){
UpdateWrapper<User> wrapper=new UpdateWrapper<>();
wrapper.set("user_name","心态").set("user_email","8888888@qq.com")//更新的数据
.eq("user_status","1");//更新的条件
int result= userMapper.update(null, wrapper);
System.out.println("result=> "+result);
}
运行效果图,可看到和上面方法生成的sql语句是一样的,也能进行更新操作:
注:强调eq方法中的第一个参数是数据库表的字段,而不是属性名。 UpdateWrapper中的set方法也是一样的。
总结
更新操作也是我们在实际写代码中必不可少的,掌握MP的更新操作,不管是通过id更新还是条件更新中的QueryWrapper、UpdateWrapper来更新。学会的话会很方便以后的开发,节省大量的时间。虽说条件更新中这两个方法实现的结果一样,但最好都掌握,都了解每个方法的用法。在实际编写项目时习惯用哪个看个人。这也是更新操作的全部内容。更多相关MyBatis-Plus 更新操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家
来源:https://blog.csdn.net/weixin_52258054/article/details/128051273
猜你喜欢
- 前言博主上个礼拜,已经实现了quarkus的native image应用的上线,经过两天的监控下来,一切运行指标良好,就是内存升到了100M
- 1.定义Token的注解,需要Token校验的接口,方法上加上此注解import java.lang.annotation.ElementT
- 题外话: 泛型与通配符是Java语法中比较难懂的两个语法,学习泛型和通配符的主要目的是能够看懂源码,实际使用的不多。1.泛型1.1泛型的用法
- 一、项目概述之前有不少粉丝私信我说,能不能用Android原生的语言开发一款在手机上运行的游戏呢?说实话,使用java语言直接开发游戏这个需
- 本文实例讲述了Java编程实现获取当前代码行行号的方法。分享给大家供大家参考,具体如下:最近的项目中,为了实现自定义的log类,能够输出具体
- 介绍Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache提供了一
- 第一步:下载JDK地址:http://www.oracle.com/technetwork/java/javase/downloads/in
- 本文实例为大家分享了Swing拆分窗格控件JSplitPane的使用方法,供大家参考,具体内容如下package day1115;impor
- 本文介绍IntelliJ IDEA中Project 窗口的一些设置技巧,参考IntelliJ IDEA 简体中文专题教程,英文好的同学可以查
- 前言本文章接上一篇文章继续谈一谈condition的一些用法。案例上一篇文章我提的一个需求时导入jedis坐标后才能加载该Bean,否则不加
- FastDFS 的作者余庆先生已经为我们开发好了 Java 对应的 SDK。这里需要解释一下:作者余庆并没有及时更新最新的 Java SDK
- 使用范围synchronized使用上用于同步方法或者同步代码块在锁实现上是基于对象去实现使用中用于对static修饰的便是class类锁使
- 简介ThreadPoolExecutor是一个实现ExecutorService接口的线程池,ExecutorService是主要用来处理多
- 我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还
- JAVA基础八股文Switch能支持哪些类型?jdk5之前,switch能够作用在byte,short,char,int(实际上都是提升为i
- 最近“全网域(Web Scale)”一词被炒得火热,人们也正在通过扩展他们的应用程序架构来使他们的系统变得更加“全网域”。但是究竟什么是全网
- 人们常说堆栈堆栈,堆和栈是内存中两处不一样的地方,什么样的数据存在栈,又是什么样的数据存在堆中?这里浅谈Java中的栈和堆首先,将结论写在前
- 上次面试中遇到的一个问题,问到System.out.println()中的out是不是内部类,当时就给问蒙了,直观感觉out应该是Syste
- 由于众所周知的原因,maven的库在中国大陆非常慢。我在百度上搜到的大部分文章都是直接在~/.m2/settings.xml 加入以下内容&
- synchronized关键字顾名思义,是用于同步互斥的作用的。这里精简的记一下它的使用方法以及意义:1. 当synchronized修饰