发布于2026-07-14 阅读(0)
扫一扫,手机访问
先看一下BaseMapper里提供的updateById方法,它的参数是一个实体对象,返回值是int类型——这个数字反映了操作影响了多少行数据。
如果返回0,意味着更新失败了,这在以后开发中是有用的判断依据。
来看一下实际的执行效果:

编写一个测试方法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字段的值。

为了验证修改是否成功,调用一下通过id查询的方法,查看user_id=1的数据:
//测试通过id查询
@Test
public void testSelectById(){
User user = userMapper.selectById(1L);
System.out.println(user);
}
结果一目了然——用户名和邮箱已经变成了刚设置的值,修改成功。

条件更新用的就是MP的update方法。先看看它的源码:需要传入两个参数,第一个是实体对象——也就是要修改的数据,第二个是Wrapper——这是更新条件。
int update(@Param("et") T entity, @Param("ew") Wrapper updateWrapper);
先试试QueryWrapper:
在测试类里写一个testUpdateQw方法,把用户状态为1的用户名改成“心态还需努力呀~”,邮箱改成“2132444@qq.com”。
要更新的数据放到User类里,条件则用QueryWrapper。先创建一个QueryWrapper实例,然后调用.eq方法——它也有两个参数,第一个是表字段名,第二个是该字段的值。
来看一下代码结构:

方法内容如下:
//根据条件更新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,完全符合预期。

需要注意:eq方法中的第一个参数是数据库表的字段名,而不是实体类中的属性名。
再试试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方案一模一样,更新操作同样有效。

再次强调:eq方法中的第一个参数是数据库表的字段名,不是实体属性名。UpdateWrapper的set方法也一样。
更新操作是日常开发中绕不开的环节。掌握MP的更新方式——不管是简单的通过id更新,还是条件更新中的QueryWrapper和UpdateWrapper,都能让开发效率明显提升。
虽然这两种条件更新方法最终效果一样,但最好都掌握,理解各自的用法和适用场景。实际项目中用哪个,就看个人习惯了。以上就是关于MyBatis-Plus更新操作的全部内容。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8