简介
在实际开发中,我们经常会遇到需要在数据库操作中填充一些公共字段的情况,比如创建时间和更新时间等。如果每次操作都手动填充这些字段,会很麻烦,而且容易出错。Mybatis-plus 提供了一个自动填充机制,可以方便地实现字段的自动填充,极大地减少了开发人员的工作量。
Mybatis-plus 自动填充机制
Mybatis-plus 的自动填充机制是通过拦截器实现的。它会在执行数据库的 insert 和 update 操作之前,自动填充指定的字段。具体实现的步骤如下:
-
创建一个实现
MetaObjectHandler
接口的类,用于填充字段的值。public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { // 在插入操作时填充字段的值 this.setFieldValByName("create_time", new Date(), metaObject); this.setFieldValByName("update_time", new Date(), metaObject); } @Override public void updateFill(MetaObject metaObject) { // 在更新操作时填充字段的值 this.setFieldValByName("update_time", new Date(), metaObject); } }
-
在实体类的字段上使用
@TableField
注解来指定需要填充的字段。@TableName("my_table") public class MyEntity { // 声明需要填充的字段 @TableField(fill = FieldFill.INSERT) private Date create_time; @TableField(fill = FieldFill.INSERT_UPDATE) private Date update_time; // ...其他字段和方法 }
-
配置 Mybatis-plus,使其使用自定义的
MetaObjectHandler
。@Configuration public class MybatisPlusConfig { @Bean public MetaObjectHandler metaObjectHandler() { return new MyMetaObjectHandler(); } }
使用 Mybatis-plus 自动填充
在实际使用中,我们只需要按照上述步骤配置好后,即可自动填充字段的值。下面是一个简单的示例:
@RestController
public class MyController {
@Autowired
private MyMapper myMapper;
@PostMapping("/myEntity")
public String saveMyEntity(@RequestBody MyEntity myEntity) {
myMapper.insert(myEntity);
return "success";
}
}
在上述示例中,我们只需要通过 myMapper.insert(myEntity)
插入数据,不需要手动填充 create_time
和 update_time
字段,代码会自动调用插入前的填充操作,填充这两个字段的值。
总结
通过 Mybatis-plus 的自动填充机制,我们能够方便地实现数据库操作中字段的自动填充。这不仅大大减少了开发人员的工作量,还可以提高代码的可维护性和可读性。在实际开发中,我们应该充分利用这一机制,提高开发效率。
本文来自极简博客,作者:后端思维,转载请注明原文链接:Mybatis-plus 自动填充机制,实现自动填充