MetaObjectHandler


在我們向數據庫插入一條數據的時候,少不了一些向createTime、updateTime此類字段,每次插入的數據都要設置這些個值,很煩,通過實現MetaObjectHandler接口重寫insertFill、updateFill方法可以幫你擺脫煩惱

 

MetaObjectHandler接口是mybatisPlus為我們提供的的一個擴展接口,我們可以利用這個接口在我們插入或者更新數據的時候,為一些字段指定默認值。

1:編寫MetaObjectHandler 實現類

編寫類實現MetaObjectHandler接口,重寫里面的方法就是了。

/**
 * @class mybatisPlus屬性自動填充,對應的實體類字段上需要加@TableField(fill = FieldFill.INSERT_UPDATE)
 */
@Configuration
@Slf4j
public class autoFillConfig implements MetaObjectHandler {
    /**
     * @param
     * @method 插入時自動填充
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("插入時自動填充");
        this.setFieldValByName("stock", 1, metaObject);
    }

    /**
     * @param
     * @method 更新時自動填充
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("更新時自動填充");
        this.setFieldValByName("stock", -9090, metaObject);
    }
}

 

 

 

2:實體類上邊加上@TableField(fill = FieldFill.INSERT_UPDATE)

指定進行屬性填充的時機(更新、插入、或者更新和插入)

@TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value = "商品庫存")
private Integer stock;

 

這種情況會進行屬性填充,指定了實體類

        Goods goods = new Goods();
        goods.setId(30).setName("zzh").setPrice(100D).setRemark("張子行5").setGoodsTypeId(666).setStock(10);
        goodsUpdateWrapper.eq("id", 30).set("name", "張子行666");
        goodsService.update(goods, goodsUpdateWrapper);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM