一,
创建时间 . 修改时间! 这些个操作都是自动化完成的,我们不希望手动更新!
阿里巴巴开发手册:所有的数据库表:gmt_create .gmt_modified几乎所有的表都要配置上!而且需要自动化!
二,如何实现
1,编写实体类(字段属性上添加注解)、
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {@TableId(type = IdType.AUTO)private Long id; // 必须是Long,得是long的包装类才能自动生成private String name;private int age;private String email;@TableField(fill = FieldFill.INSERT)private Data createTime;@TableField(fill = FieldFill.INSERT_UPDATE)private Data updateTime;
}
2.编写处理器来处理这个注解
package com.demo.handler;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.util.Date;@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {log.info("start createTime fill");this.setFieldValByName("createTime",new Date(),metaObject);this.setFieldValByName("updateTime",new Date(),metaObject);}@Overridepublic void updateFill(MetaObject metaObject) {log.info("start updateFill fill");this.setFieldValByName("updateTime",new Date(),metaObject);}
}
3,测试
代码
@Testvoid Create(){User user = new User();user.setAge(18);user.setName("John");int insert = mapper.insert(user);System.out.println(insert);}
数据库
代码
@Testvoid updateFill(){User user = new User();user.setId(1L);user.setAge(20);int update = mapper.updateById(user);}
数据库