在我們向數據庫插入一條數據的時候,少不了一些向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);