注意:本教程使用的数据库脚本、数据模型和环境信息请参考 “MyBatis Plus环境准备” 章节,点击下载示例源码。
在 BaseMapper 接口中定义了两个 update 方法,一个将根据 ID 更新数据,每次只更新一条数据(因为 ID 为主键,唯一)。另一方法则是根据 Wrapper 条件批量更新数据。方法定义如下:
// 根据 whereEntity 条件,更新记录 int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper); // 根据 ID 修改 int updateById(@Param(Constants.ENTITY) T entity);
参数说明:
entity:实体对象
updateWrapper:构造更新数据条件
(1)根据 ID 更新数据,代码如下:
package com.hxstrive.mybatis_plus.update; import com.hxstrive.mybatis_plus.mapper.SimpleMapper; import com.hxstrive.mybatis_plus.model.UserBean; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.Date; @RunWith(SpringRunner.class) @SpringBootTest class Update1Test { @Autowired private SimpleMapper simpleMapper; @Test void contextLoads() { UserBean userBean = new UserBean(); userBean.setUserId(999); userBean.setName("insert test update"); userBean.setAge(40); userBean.setSex("女"); userBean.setFace("welcome".getBytes()); userBean.setBorthday(new Date()); int result = simpleMapper.updateById(userBean); System.out.println("result=" + result); } }
(2)根据查询条件批量更新数据,代码如下:
package com.hxstrive.mybatis_plus.update; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.hxstrive.mybatis_plus.mapper.SimpleMapper; import com.hxstrive.mybatis_plus.model.UserBean; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest class Update2Test { @Autowired private SimpleMapper simpleMapper; @Test void contextLoads() { UpdateWrapper<UserBean> wrapper = new UpdateWrapper<>(); wrapper.ge("age", 30); // 大于等于 30 UserBean userBean = new UserBean(); userBean.setAge(80); int result = simpleMapper.update(userBean, wrapper); System.out.println("result=" + result); } }