MyBatis-Plus中更新操作的两种实现

作者:心态还需努力呀 时间:2022-06-24 03:09:14 

前言

本文学习MP中的更新操作方法,带大家一起查看源码,了解更新操作的方法。学会熟练地去运用更新方法解决自己在项目中的问题。

一、通过id更新

1.查看mapper继承的BaseMapper下通过id更新的方法updateById可看出参数传入的是一个对象。并且返回的是一个int类型的值, 该值的含义就是受影响的行数。为0表示更新失败,作为以后开发中要处理的逻辑有用处。如下图所示:

MyBatis-Plus中更新操作的两种实现

 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字段的值进行修改。

MyBatis-Plus中更新操作的两种实现

 4.查询修改结果调用通过id查询的方法查询user_id=1的表信息是否发生改变。

//测试通过id查询
   @Test
   public void testSelectById(){
       User user = userMapper.selectById(1L);
       System.out.println(user);
   }

效果如下图所示,可看到用户名和邮箱已经变为了修改后的值,修改成功!:

MyBatis-Plus中更新操作的两种实现

二、条件更新

在做条件更新时我们要用到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方法里也有两个参数,第一个是表字段名,第二个是该字段的值。如下图所示:

MyBatis-Plus中更新操作的两种实现

然后即可写出该方法的内容:

//根据条件更新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值。

MyBatis-Plus中更新操作的两种实现

 注:再次强调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语句是一样的,也能进行更新操作:

MyBatis-Plus中更新操作的两种实现

注:强调eq方法中的第一个参数是数据库表的字段,而不是属性名。 UpdateWrapper中的set方法也是一样的。

总结 

更新操作也是我们在实际写代码中必不可少的,掌握MP的更新操作,不管是通过id更新还是条件更新中的QueryWrapper、UpdateWrapper来更新。学会的话会很方便以后的开发,节省大量的时间。虽说条件更新中这两个方法实现的结果一样,但最好都掌握,都了解每个方法的用法。在实际编写项目时习惯用哪个看个人。这也是更新操作的全部内容。更多相关MyBatis-Plus 更新操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家

来源:https://blog.csdn.net/weixin_52258054/article/details/128051273

标签:MyBatis-Plus,更新操作
0
投稿

猜你喜欢

  • Springboot Vue可配置调度任务实现示例详解

    2023-11-09 03:33:19
  • SpringMVC项目异常处理机制详解

    2023-03-12 13:13:25
  • IDEA Error:java:无效的源发行版:13的解决过程

    2023-11-25 10:07:19
  • IntelliJ IDEA快速创建getter和setter方法

    2023-06-04 00:44:46
  • Java C++ 算法题解leetcode669修剪二叉搜索树示例

    2022-09-22 04:56:13
  • Java求一个分数数列的前20项之和的实现代码

    2021-08-22 14:59:58
  • Java最全文件操作实例汇总

    2023-11-14 13:00:17
  • synchronized背后的monitor锁实现详解

    2023-07-31 08:14:10
  • 50 道Java 线程面试题(经典)

    2023-11-23 19:47:37
  • ContentProvider启动流程示例解析

    2023-07-31 03:57:34
  • spring boot和mybatis集成分页插件

    2021-11-05 10:21:17
  • java 优雅关闭线程池的方案

    2022-03-20 23:05:44
  • Idea Jrebel 报错:Cannot reactivate,offline seat in use

    2022-01-11 05:08:22
  • java二维数组实现推箱子小游戏

    2022-08-31 10:18:40
  • Spring JDBCTemplate原理及使用实例

    2023-03-11 09:47:19
  • Java反射机制的简单讲解

    2023-12-12 20:49:13
  • SpringBoot整合Mybatis,解决TypeAliases配置失败的问题

    2023-11-28 14:59:24
  • netty pipeline中的inbound和outbound事件传播分析

    2023-08-27 06:57:00
  • 快速了解hibernate配置文件与映射文件

    2023-11-04 23:02:26
  • java递归实现汉诺塔步骤介绍

    2022-03-03 09:44:17
  • asp之家 软件编程 m.aspxhome.com