MyBatis-Plus中的更新操作方式(通过id更新和条件更新)
一、通过id更新 先看一下BaseMapper里提供的updateById方法,它的参数是一个实体对象,返回值是int类型——这个数字反映了操作影响了多少行数据。 如果返回0,意味着更新失败了,这在以后开发中是有用的判断依据。 来看一下实际的执行效果: 编写一个测试方法testUpdateById,
一、通过id更新
先看一下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);
2.1 使用QueryWrapper进行条件更新
先试试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方法中的第一个参数是数据库表的字段名,而不是实体类中的属性名。
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方案一模一样,更新操作同样有效。

再次强调:eq方法中的第一个参数是数据库表的字段名,不是实体属性名。UpdateWrapper的set方法也一样。
总结
更新操作是日常开发中绕不开的环节。掌握MP的更新方式——不管是简单的通过id更新,还是条件更新中的QueryWrapper和UpdateWrapper,都能让开发效率明显提升。
虽然这两种条件更新方法最终效果一样,但最好都掌握,理解各自的用法和适用场景。实际项目中用哪个,就看个人习惯了。以上就是关于MyBatis-Plus更新操作的全部内容。
WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理工具,可在 Windows 上完成照片修饰、选区抠图、图层合成、文字排版、绘画及生成式编辑。软件采用订阅授权,由 Creative Cloud 管理安装、更新与许
Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator
Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。













