商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > MyBatis-Plus中的更新操作方式(通过id更新和条件更新)

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

  发布于2026-07-14 阅读(0)

扫一扫,手机访问

一、通过id更新

先看一下BaseMapper里提供的updateById方法,它的参数是一个实体对象,返回值是int类型——这个数字反映了操作影响了多少行数据。

如果返回0,意味着更新失败了,这在以后开发中是有用的判断依据。

来看一下实际的执行效果:

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

编写一个测试方法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);

}

运行上面的测试方法,看看生成的SQL语句:

可以发现,SQL把user_id字段作为条件,更新user_name和user_email字段的值。

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

为了验证修改是否成功,调用一下通过id查询的方法,查看user_id=1的数据:

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

结果一目了然——用户名和邮箱已经变成了刚设置的值,修改成功。

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

二、条件更新

条件更新用的就是MP的update方法。先看看它的源码:需要传入两个参数,第一个是实体对象——也就是要修改的数据,第二个是Wrapper——这是更新条件。

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

2.1 使用QueryWrapper进行条件更新

先试试QueryWrapper:

在测试类里写一个testUpdateQw方法,把用户状态为1的用户名改成“心态还需努力呀~”,邮箱改成“2132444@qq.com”。

要更新的数据放到User类里,条件则用QueryWrapper。先创建一个QueryWrapper实例,然后调用.eq方法——它也有两个参数,第一个是表字段名,第二个是该字段的值

来看一下代码结构:

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

方法内容如下:

//根据条件更新QueryWrapper用法
    @Test
    public void testUpdateQw(){
        User user=new User();
        user.setUserName("心态还需努力呀~");
        user.setUserEmail("2132444@qq.com");
        QueryWrapper 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方法——它也有两个参数,第一个是表字段名,第二个是字段的值。结构如下图:

因为User设置值的功能被UpdateWrapper接管了,所以update的第一个参数直接传null就行。代码如下:

//根据条件更新UpdateWrapper用法
    @Test
    public void testUpdateUw(){
        UpdateWrapper 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和QueryWrapper方案一模一样,更新操作同样有效。

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

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

总结

更新操作是日常开发中绕不开的环节。掌握MP的更新方式——不管是简单的通过id更新,还是条件更新中的QueryWrapper和UpdateWrapper,都能让开发效率明显提升。

虽然这两种条件更新方法最终效果一样,但最好都掌握,理解各自的用法和适用场景。实际项目中用哪个,就看个人习惯了。以上就是关于MyBatis-Plus更新操作的全部内容。

本文转载于:https://www.jb51.net/program/3626862p4.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注