絮絮叨叨
MetaObject对象来实现对数据库表的字段进行自动填充。当咱们插入数据时,MybatisPlus会使用
MetaObject对象检测实体中的特定字段,如果检测到有需要填充的字段,它就会根据特定的逻辑自动填充这些字段。
改改能抄的代码
Hero实体,包括创建者、创建时间、更新者、更新时间等属性,然后使用MybatisPlus的自动填充功能为这些属性赋值。
实体类
@Data
@TableName("Hero")
public class Hero {
@TableId(type=IdType.AUTO)
private Long id;
private String name;
@TableField(fill = FieldFill.INSERT)
private Long createBy;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.UPDATE)
private Long updateBy;
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
}
Handler
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createBy", Long::valueOf, "zuoyang");
this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateBy", Long::valueOf, "zuoyang");
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
}
}
Config
@Configuration
@MapperScan("com.zuoyang.mapper")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// add PageInterceptor
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
paginationInnerInterceptor.setDbType(DbType.MYSQL);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
@Bean
public MyMetaObjectHandler myMetaObjectHandler() {
return new MyMetaObjectHandler();
}
}
@TableField(fill = FieldFill.INSERT)和
@TableField(fill = FieldFill.UPDATE)注解来标记需要自动填充的属性。
MyMetaObjectHandler的对象,并实现了
MetaObjectHandler接口,该对象将根据自定义逻辑为咱们的实体属性自动填充值。在这个示例中,咱们为
createBy属性的初始值提供了一个默认值“zuoyang”,并使用
LocalDateTime::now方法为
createTime和
updateTime属性提供当前时间。
MyMetaObjectHandler对象。在进行数据库操作时,MybatisPlus会生成一个
MetaObject对象并将这个对象传递到
MyMetaObjectHandler中,
MyMetaObjectHandler将根据实体属性需要自动填充的规则来自动填充这些属性。
@TableField
用法
=,例如这个示例中是用 LIKE 运算符进行模糊查询。 | |
参考文献:
Mybatis Plus 官方文档 https://baomidou.com/
文章转载自左羊公社,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




