MyBatis-Plus lambdaUpdate 更新 FieldFill.UPDATE 字段
MyBatis-Plus About 1,390 wordsFieldFill.UPDATE
基类中定义了fill = FieldFill.UPDATE
,更新时自动填充的字段。
@Getter
@Setter
@ToString
public abstract class BaseEntity {
@TableField(fill = FieldFill.UPDATE)
private OffsetDateTime updateTs;
}
MetaObjectHandler
要使得fill = FieldFill.UPDATE
起作用还需要定义MetaObjectHandler
实现类,更新字段名填充。
@Component
public class FieldFillHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTs", OffsetDateTime.class, OffsetDateTime.now());
this.strictInsertFill(metaObject, "createBy", String.class, SecurityContextHolder.getContext().getAuthentication().getName());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTs", OffsetDateTime.class, OffsetDateTime.now());
this.strictUpdateFill(metaObject, "updateBy", String.class, SecurityContextHolder.getContext().getAuthentication().getName());
}
}
lambdaUpdate
对于使用了LambdaUpdateWrapper
或lambdaUpdate
方法的,需要在update
中new
一个对象。
new
对象并不会导致全部字段更新,只会更新设置的字段。(可以打开SQL
打印查看具体执行的update
语句)
LambdaUpdateWrapper<Test> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(Test::getId, "123");
wrapper.set(Test::getName, "测试");
testDAO.update(new Test(), wrapper);
同理
testDAO.lambdaUpdate()
.eq(Test::getId, "123")
.set(Test::getName, "测试")
.update(new Test());
Views: 171 · Posted: 2024-10-25
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...