MyBatis-Plus lambdaUpdate 更新 FieldFill.UPDATE 字段

MyBatis-Plus About 1,390 words

FieldFill.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

对于使用了LambdaUpdateWrapperlambdaUpdate方法的,需要在updatenew一个对象。

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

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh