MybatisPlus进阶篇学习笔记(三)------自动填充

原创:兜里的猫

本章目录

  • 自动填充简介
  • 自动填充实现
  • 自动填充优化

1 自动填充简介

自动填充,意味着就是设置默认值,不依赖数据库设置默认值,依赖程序实现。当数据库中多个表有时间字段 createTime、updateTime,并且字段名一致时,不需要每次都设置这些值,可以使用 mp 自动填充公共字段的策略。通过元对象处理器接口 com.baomidou.mybatisplus.core.handlers.MetaObjectHandler 进行实现。

2 自动填充实现

实现自动填充只需要两步

第一步:

在类字段中加上注解

//创建时间
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;

//更新时间
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;

其中枚举类 FieldFill 有 4 个对象:DEFAULT(默认不处理)、INSERT(插入时填充字段)、UPDATE(更新时填充字段)、INSERT_UPDATE(插入和更新时填充字段)。

第二步:

新建一个填充处理器 MyMetaObjectHandler 实现 MP 提供的元对象处理器接口

image
image

第三步:

在 controller 中编写接口测试

image
image

在执行插入操作时,代码中可以看到我没有对 createTime 设置,在控制台打印的内容看到,进入了上面定义的填充处理器为我们自动填充的 createTime 值。

image
image

更新操作也是如此。

3 自动填充优化

不管我们的实体类中有没有需要填充的字段,mp 在每次执行的时候都会默认进入到我们的填充处理器,这样就增加了性能开销。而我需要在有相应填充字段的时候调用,没有就不调用,具体实现可以通过判断是否有相应属性。

image
image

我对填充处理器类进行了优化,insertFill 方法中加入了是否有该字段的判断;updateFill 方法中加入了是否有该字段的判断,同时当字段值在程序中没有设置时让 mp 自动帮我填充,当字段值在程序中设置值时则不需要 mp 自动填充。

dvdf

欢迎访问博客网页版:www.wldeer.com

评论

兜里的猫 : 是md
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×