当前位置: 首页 > news >正文

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对数据库表中的名字和邮箱进行修改。

//测试通过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来更新。学会的话会很方便以后的开发,节省大量的时间。虽说条件更新中这两个方法实现的结果一样,但最好都掌握,都了解每个方法的用法。在实际编写项目时习惯用哪个看个人。这也是更新操作的全部内容。下节我们来看删除操作~MP内容持续更新中~~~相信看到这里的一定都会有收获吧~

相关文章:

  • easy-rules规则引擎最佳落地实践
  • 看我如何连夜自建网站背刺我的求职对手们
  • 027.将有序数组转换为二叉搜索树
  • 第五届传智杯-初赛【B组-题解】
  • 最全面的SpringMVC教程(一)——SpringMVC简介
  • OpenCV-Python小应用(六):车道线检测
  • 微信小程序介绍
  • matlab实现MCMC的马尔可夫转换MS- ARMA - GARCH模型估计
  • 华为云桌面Workspace,让你的办公更加舒适惬意
  • 基于优先级的时间片轮转调度算法(C语言实现)
  • 43特征01——特征值特征向量: 特征多项式、特殊矩阵 的特征值与特征向量、Hamilton-Cayley 定理
  • [毕业设计]机器学习的运动目标跟踪-opencv
  • Ubuntu 软件管理学习笔记
  • python中pytest库用法详解
  • CSRF漏洞简介
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • echarts花样作死的坑
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • jQuery(一)
  • JS字符串转数字方法总结
  • Linux CTF 逆向入门
  • markdown编辑器简评
  • MaxCompute访问TableStore(OTS) 数据
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • swift基础之_对象 实例方法 对象方法。
  • Vue 重置组件到初始状态
  • vue中实现单选
  • yii2中session跨域名的问题
  • 翻译--Thinking in React
  • 回流、重绘及其优化
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 聚类分析——Kmeans
  • 排序(1):冒泡排序
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微信支付JSAPI,实测!终极方案
  • 源码安装memcached和php memcache扩展
  • 正则表达式小结
  • ionic异常记录
  • k8s使用glusterfs实现动态持久化存储
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1)SpringCloud 整合Python
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Core 中的路径问题
  • .Net Core缓存组件(MemoryCache)源码解析
  • .Net IE10 _doPostBack 未定义
  • .NET 命令行参数包含应用程序路径吗?
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • SpringMVC 异常处理
  • 杨辉三角形(蓝桥杯)
  • 【第72题】用栈实现队列
  • 牛人语录!
  • Intellij IDEA 常用快捷键整理
  • SQL Server数据导出到Oracle的方案
  • python - web自动化测试 - 元素操作 - 鼠标键盘
  • 【第73题】用队列实现栈
  • 利用Ruby简化你的Java测试
  • robots.txt 不让搜索引擎收录网站的方法