mybatisplus saveorupdate在update时不使用实体类某些字段的值
时间: 2023-12-06 14:44:37 浏览: 120
Mybatis Plus 字段为空值时执行更新方法未更新解决方案
在 MyBatis Plus 中,saveOrUpdate 方法会根据传入的实体类对象来判断是执行插入还是更新操作。如果想在更新操作时不使用实体类某些字段的值,可以使用 MyBatis Plus 提供的 UpdateWrapper 来构建更新条件,只更新需要更新的字段。
例如,假设有一个 User 实体类,其中有 id、name、age、create_time 等字段,现在想要更新用户的姓名和年龄,但不想更新创建时间,可以采用如下方式:
```java
User user = new User();
user.setId(1);
user.setName("Tom");
user.setAge(20);
// 不设置 create_time 字段的值
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", user.getId())
.set("name", user.getName())
.set("age", user.getAge());
// 不更新 create_time 字段
userService.update(updateWrapper);
```
上述代码中,通过构建 UpdateWrapper 对象来指定更新条件,并使用 set 方法来设置需要更新的字段及其对应的值。在这个例子中,只更新了 name 和 age 字段,而没有更新 create_time 字段。最后通过 UserService 的 update 方法执行更新操作。
需要注意的是,如果使用了 UpdateWrapper 来指定更新条件,则 saveOrUpdate 方法中的实体类对象的字段值会被忽略。
阅读全文