需求描述:
项目中经常会遇到一些数据,每次都 使用相同的方式填充,例如记录的创建时间,更新时间等。
我们可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作。
1.数据库修改
在User表中添加datetime类型的新的字段 create_time、update_time
2.实体类修改
实体上增加字段并添加自动填充注解
@TableField(fill = FieldFill.INSERT)
private Date createTime; //create_time
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime; //update_time
同时编写自动填充实现类
注意:不要忘记添加 @Component 注解
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
//mp执行添加操作,这个方法执行
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
如果此类仍未被扫描到,则在启动类中添加@ComponentScan注解
@SpringBootApplication
@MapperScan("com.smallorange.mapper")
@ComponentScan("com.smallorange.handler")
public class MybatisPlusDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusDemoApplication.class, args);
}
}
3.测试
运行以下代码
@Test
public void testAdd() {
User user = new User();
user.setName("lucy3");
user.setAge(22);
user.setEmail("666666@qq.com");
int insert = userMapper.insert(user);
System.out.println(insert);
}
控制台日志
数据库成功插入了一条新数据,其中创建时间和修改时间是通过自动填充生成的。