使用MyBatis-Plus时,有时候我们在更新实体时,可能只想更新部分字段。下面介绍两种更新部分字段的方法。
一、先查询后更新的方式
这种方式不是很好,说白了就是先执行一遍查询,查询到实体后,设置修改的属性,再次调用update
方法更新,这样mybatis只会更新修改的字段。
二、通过UpdateWrapper
更新
LambdaUpdateWrapper<OilUser> userUpdateWrapper = new LambdaUpdateWrapper<>();
userUpdateWrapper.set(OilUser::getUsername, user.getUsername());
userUpdateWrapper.set(OilUser::getNickName, user.getNickName());
userUpdateWrapper.set(OilUser::getTel, user.getTel());
userUpdateWrapper.set(OilUser::getEmail, user.getEmail());
if (!StringUtils.isEmpty(user.getPassword())) {
userUpdateWrapper.set(OilUser::getPassword, passwordEncoder.encode(user.getPassword()));
}
userUpdateWrapper.eq(OilUser::getId, user.getId());
oilUserMapper.update(null, userUpdateWrapper);
注意oilUserMapper.update(null, userUpdateWrapper);
,第一个参数一定要设置null
,这样就只会更新你set
的字段。