Mybatis-plus學習筆記(十一)自動填充功能

黃 坤發表於2020-10-04

1.快速開始
2.程式碼生成器
3.CRUD介面——Service CRUD介面
4.CRUD介面——Mapper CRUD介面
5.條件構造器
6.分頁外掛
7.Sequence主鍵
8.自定義ID生成器
9.邏輯刪除
10.樂觀鎖外掛
11.自動填充

在我的理解中,自動填充就是一些原本需要我們手動去敲程式碼填充資料庫欄位中的值,現在改為由mybatis-plus給你做了
比如,你的資料庫中含有資料的新增時間(gmt_create)修改時間(gmt_modified),你原來新增資料的時候要set gmt_create ,修改的時候要set
gmt_modified,有了mybatis-plus,這些操作全部就不要了,僅僅只需要簡單的配置一下就可以了。

1.資料庫表欄位新增
在這裡插入圖片描述

2.實體類變數新增

    @ApiModelProperty(value = "新增時間")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime gmtCreate;

    @ApiModelProperty(value = "修改時間")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime gmtModified;

3.自定義實現類

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        this.setFieldValByName("gmtCreate", LocalDateTime.now(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        this.setFieldValByName("gmtCreate", LocalDateTime.now(), metaObject);
        this.setFieldValByName("gmtModified", LocalDateTime.now(), metaObject);
    }
}

測試程式碼:

    //插入操作
    @RequestMapping("/insert")
    public Integer version() {
        User user = new User();
        user.setId(8L);
        user.setName("hk4445");
        user.setAge(28);
        user.setEmail("2284612137@qq.com");

        int insert = userMapper.insert(user);

        return insert;
    }

    //更新操作
    @RequestMapping("/update")
    public Integer update() {
        User user = userMapper.selectById(8L);
        user.setName("hk10101");

        int update = userMapper.updateById(user);

        return update;
    }

初始資料庫:

在這裡插入圖片描述
訪問 http://localhost:8080/hk/insert 後的資料庫

在這裡插入圖片描述
訪問 http://localhost:8080/hk/update 後的資料庫

在這裡插入圖片描述

從上面可以看出,我們並沒有在插入資料到資料庫的時候新增時間值

在這裡插入圖片描述
而是通過配置進入
在這裡插入圖片描述
自動填充就是這個意思

相關文章