• MyBatis-Plus中的更新操作(通过id更新和条件更新)


    目录

    前言

    一、通过id更新

    二、条件更新

    2.1 使用QueryWrapper进行条件更新

    2.2 使用UpdateWrapper进行条件更新

    总结 


    前言

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

    Mybatis-Plus知识点[MyBatis+MyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客

    Mybatis-Plus+SpringBoot结合运用_心态还需努力呀的博客-CSDN博客

    MyBaits-Plus中@TableField和@TableId用法_心态还需努力呀的博客-CSDN博客

    持续更新中~


    一、通过id更新

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

     2.编写测试类testUpdateById方法,在方法中通过调用MP的updateById对数据库表中的名字和邮箱进行修改。

    1. //测试通过id更新数据
    2. @Test
    3. public void testUpdateById(){
    4. User user=new User();
    5. user.setUserId(1);//更新id=?的数据
    6. //更新内容,可多个
    7. user.setUserName("心态");
    8. user.setUserEmail("3052273528@qq.com");
    9. int result = userMapper.updateById(user);
    10. System.out.println(result);
    11. }

     3.运行上面的方法得出结果,查看生成的sql语句:如下图所示,可看到sql语句把表中的user_id字段作为条件,对user表中的user_name、user_email字段的值进行修改。

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

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

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

    二、条件更新

    在做条件更新时我们要用到MP中的update方法,先来看下源码:要传入2个参数,第一个是实体,就是要进行修改的数据。第二个传入的是Wrapper是要进行更新的条件。

    int update(@Param("et") T entity, @Param("ew") Wrapper updateWrapper);

    2.1 使用QueryWrapper进行条件更新

    我们先测试QueryWrapper对数据进行条件更新:

    在测试类中编写testUpdateQw()方法,修改用户状态为1的用户名改为(心态还需努力呀~)和邮箱改为(2132444@qq.com)。

    我们把要更新的数据放到User类里,条件就需要用到QueryWrapper,首先需要new出来,然后用.eq调用方法,eq方法里也有两个参数,第一个是表字段名,第二个是该字段的值。如下图所示:

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

    1. //根据条件更新QueryWrapper用法
    2. @Test
    3. public void testUpdateQw(){
    4. User user=new User();
    5. user.setUserName("心态还需努力呀~");
    6. user.setUserEmail("2132444@qq.com");
    7. QueryWrapper wrapper=new QueryWrapper<>();
    8. wrapper.eq("user_status","1");
    9. int result= userMapper.update(user, wrapper);
    10. System.out.println("result=> "+result);
    11. }

     查看运行结果,通过生成的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即可,代码如下:

    1. //根据条件更新UpdateWrapper用法
    2. @Test
    3. public void testUpdateUw(){
    4. UpdateWrapper wrapper=new UpdateWrapper<>();
    5. wrapper.set("user_name","心态").set("user_email","8888888@qq.com")//更新的数据
    6. .eq("user_status","1");//更新的条件
    7. int result= userMapper.update(null, wrapper);
    8. System.out.println("result=> "+result);
    9. }

    运行效果图,可看到和上面方法生成的sql语句是一样的,也能进行更新操作:

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

    总结 

    更新操作也是我们在实际写代码中必不可少的,掌握MP的更新操作,不管是通过id更新还是条件更新中的QueryWrapper、UpdateWrapper来更新。学会的话会很方便以后的开发,节省大量的时间。虽说条件更新中这两个方法实现的结果一样,但最好都掌握,都了解每个方法的用法。在实际编写项目时习惯用哪个看个人。这也是更新操作的全部内容。下节我们来看删除操作~MP内容持续更新中~~~相信看到这里的一定都会有收获吧~

  • 相关阅读:
    windows 修改 samba 连接端口 445 到指定端口(支持监听ipv6 及ipv4 IP地址)
    使用 Python 创建您自己的NFT集合(一)自己动手制作中秋月饼上链送给亲朋好友
    【员工排班优化调度】基于多目标遗传算法的多技能员工排班调度(Matlab代码实现)
    c# sqlite 修改字段类型
    虚幻中的网络概述一
    数据标注是一块肥肉,盯上这块肉的不止中国丨曼孚科技
    生活美学 | 8种咖啡冲煮器具分别有什么特点
    1.python基础
    【华为OD机试】服务失效判断【2023 B卷|200分】
    Oracle Linux 8.5上架微软商店;英特尔发力 RISC-V;200 亿参数 GPT-NeoX 即将开源 | 开源日报
  • 原文地址:https://blog.csdn.net/weixin_52258054/article/details/128051273