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

这篇具有很好参考价值的文章主要介绍了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表示更新失败,作为以后开发中要处理的逻辑有用处。如下图所示:

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

 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中的更新操作(通过id更新和条件更新)

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

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

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

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

二、条件更新

在做条件更新时我们要用到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中的更新操作(通过id更新和条件更新)然后即可写出该方法的内容:

//根据条件更新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中的更新操作(通过id更新和条件更新)

 注:再次强调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中的更新操作(通过id更新和条件更新)

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

总结 

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

到了这里,关于MyBatis-Plus中的更新操作(通过id更新和条件更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis-plus中的DML编程控制--增删改的高级操作

    1.1、id生成策略控制 不同的表应用不同的id生成策略 日志:自增(1,2,3,4,…) 购物订单:特殊规则( FQ23948AK3843) 外卖单:关联地区日期等信息(10 04 20200314 34 91) 关系表:可省略id ······ 名称: @TableId 类型: 属性注解 位置:模型类中用于表示主键的属性定义上方 作用:设置当前类中主

    2024年02月16日
    浏览(42)
  • Mybatis-plus id生成策略

    目录 1.1、为什么选择不同的id生成策略 1.2、策略种类 1.2.1、AUTO(自动增长策略) 1.2.3、ASSIGN_ID(雪花算法) 1.2.4、ASSIGN_UUID(不含中划线的UUID) 1.2.5、NONE(无状态) 1.3、注意 1、Mybatis-plus提供了多种主键生成策略, 可以在Pojo类中主键上加注解进行配置,例如数据库主键自

    2023年04月25日
    浏览(38)
  • Mybatis-Plus id生成策略控制

    目录 id生成策略控制 不同的表应用不同的id生成策略 名称 @TableId AUTO策略 除了AUTO这个策略以外,还有如下几种生成策略: 分布式ID是什么? INPUT策略 ASSIGN_ID策略 ASSIGN_UUID策略 雪花算法 ID生成策略对比 不同的表应用不同的id生成策略 日志:自增(1,2,3,4,……) 购物订单:特殊

    2024年02月22日
    浏览(46)
  • MyBatis-Plus条件查询问题解决

    问题描述 系统中有用户注册的功能,但是会出现重复注册的现象,代码中有做过重复校验,但是没有生效。 问题解决 首先排查数据生成时间点不同,相差时间有长有短,不是用户同时多次点击的原因,应该是用户这边不同时间重复多次注册导致的,但是程序中防止重复校验

    2024年02月16日
    浏览(46)
  • MyBatis-Plus(三.Wrapper条件查询)

    Wrapper是Mybatis-plus中特有的 条件封装接口 也就是把 查询的条件 封装到Wrapper实现类中 它的各个实现类有什么作用呢, 我觉得直接 顾名思义 吧  QueryWrapper(删,查) 因为参数一般都从前端传来的数据中得到, 所以必须用条件封装的第一个参数确认它不为null UpdateWrapper(改) LambdaQuer

    2024年02月04日
    浏览(36)
  • Mybatis-Plus设置全局或者局部ID自增

    在使用Mybatis-Plus新增的时候,我们往往想要id随着数据库自增,但是如果不是我们指定id为auto(自增)的话,会通过算法算出来一个比较大的id。 这时候可以通过全局或局部的方式实现id自增 在配置文件里面添加如下配置: 这里的auto大小写无所谓,都不会影响id自增效果 我们可

    2024年02月14日
    浏览(45)
  • MyBatis-Plus:条件构造器Wrapper

    目录 1.Wrapper概述 1.1.Wrapper的继承关系 1.2.Wapper介绍  1.3.各个构造器使用区别 1.4.构造器常用方法 2.Wrapper常用构造器介绍 2.1.QueryWrapper 2.2.UpdateWrapper 2.3.LambdaQueryWrapper 2.4.AbstractWrapper 3. Lambda条件构造器 3.1.示例 4.鸣谢         我们在实际操作数据库的时候会涉及到很多的条件

    2024年02月11日
    浏览(63)
  • Mybatis-plus动态条件查询QueryWrapper的使用

    queryWrapper是mybatis plus中实现查询的对象封装操作类,可以封装sql对象,包括where条件,order by排序,select哪些字段等等,他的层级关系如下图: 2.1-案例一:根据name模糊查看未删除的用户列表信息 过滤条件: queryWrapper实现: 2.2-案例二:查看姓李的并且邮箱不为空的用户列表

    2024年02月14日
    浏览(45)
  • MyBatis-Plus深入 —— 条件构造器与插件管理

            在前面的文章中,荔枝梳理了一个MyBatis-Plus的基本使用、配置和通用Service接口,我们发现在MyBatis-Plus的辅助增强下我们不再需要通过配置xml文件中的sql语句来实现基本的sql操作了,不愧是最佳搭档!在这篇文章中,荔枝会着重梳理有关MyBatis-Plus的两个知识点:条

    2024年02月09日
    浏览(49)
  • mybatis-plus 多表关联条件分页查询

    此处以一对多,条件分页查询为例: 主表 明细表 0.请求dto 1.Controller 层: 注:我的项目中进行了service 读写分类配置,实际使用中,直接使用mybatis-plus中的 IUserService 对应的接口就行。 2.service 层 service impl实现层: 3.mapper 层 4.mapper.xml层 5.测试: 结果body: Q:todo page 分页会把

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包