Mybatis-plus3.0 更新字段为 null
Mybatis-plus3.0 更新字段为 null
在3.0之前如果想更新数据库的字段为 null 值,大多通过实体类上添加注解实现 ,存在一定的风险,亦或者手动写 sql 。在 3.0 + 后提供了
UpdateWrapper`更新条件构造器来实现字段置 null 值、空字符串的操作。
1、创建更新条件构造器
在这里我要置 age 的值为 null。
//第一种:new对象,字段多时使用
User user = new User();
user.setName("test");
UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.set("age", null).eq("id",1294183513728778246L);
//第二种,直接在构造器上更新字段及拼接条件
UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.set("age", null).set("name", "test").eq("id",1294183513728778246L)
2、使用并打印结果
通过mapper.update()
方法使用构造器。
//第一种
int count = userMapper.update(user,wrapper);
//第二种
int count = userMapper.update(null,wrapper);
输出结果如下
可以看到 age 的值成功置为 null 了。
3、注意点
如果要更新 id的值,只能通过构造器上 set更新字段实现。
即通过 UpdateWrapper()
的set()
方法。
user.setName("test");
wrapper.set("age", null).set("id",1294183513728778246L).eq("id",1)
输出结果如下
通过 new 对象 set Id 无效
user.setName("test");
//set Id 无效
user.setId(1294183513728778246L);
wrapper.set("age", null).eq("id",1);
输出结果如下
自我控制是最强者的本能-萧伯纳