MyBatis-Plus 自动填充
有些字段,我们通过自动填充的方式比较方便。程序员嘛,喜欢把重复的工作自动完成。
比如说:
- 创建时间
- 更新时间
- 逻辑删除
- 其他默认值
例子
接下来我们以
- 创建时间
- 更新时间
- 逻辑删除标记为例子
字段: - create_time - update_time - deleted
对应bean类里的字段: - createTime - updateTime - deleted
步骤
步骤一,编写bean类
public class Test{
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间")
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "逻辑删除标记")
@TableField(fill = FieldFill.INSERT)
@TableLogic
private String deleted;
}
id自行解决哈,按自己的表走就好。
步骤二,编写MyBatisMetaObjectHandler
继承自MetaObjectHandler
代码如下:
@Slf4j
@Component
public class MyBatisMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime",new Date(), metaObject);
this.setFieldValByName("deleted", "0", metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
到这里,便可以自动填充了。
但是逻辑删除还需要做一些配置。
逻辑删除的配置
mybatis-plus:
mapper-locations: classpath:net/sob/xxx/mapper/xml/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
到此,自动填充的就完成了。
至于前面的注解值:
public enum FieldFill {
/**
* 默认不处理
*/
DEFAULT,
/**
* 插入时填充字段
*/
INSERT,
/**
* 更新时填充字段
*/
UPDATE,
/**
* 插入和更新时填充字段
*/
INSERT_UPDATE
}
Okay,这篇文章就到此吧,如果同学们遇到什么问题可以到问答模块里发帖子。