根据阿里巴巴开发手册,表必备三个字段:id,create_time, update_time,针对创建时间和修改时间我们有两种方式可以去生成——数据库层面和代码层面
1 . 数据库层面:
CREATE TABLE `stu` (
'id' int NOT NULL AUTO_INCREMENT,
'createTime' timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
'moditiyTime' timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY ('id'));
2 . 代码层面
代码层面,就是我们使用代码去填充创建时间和修改时间,下面我就主要说一下这个功能在Mybatis-plus中的使用
1.创建一张表,表中含有字段create_time和update_time,字段的类型为:datetime
2.在springboot的pom文件中,引入mybatis-plus的依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
3.在一个项目中,我们会有很多的实体类,在实体类中配置属性创建时间和更新时间,属性上加入@TableField注解
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
4.注解@TableField中fill详细介绍
(1)fill(字段填充策略),为枚举类型,不是必须指定,默认为FieldFill.DEFAULT
(2)FieldFill
DEFAULT:默认不处理
INSERT:插入时填充字段
UPDATE:更新时填充字段
INSERT_UPDATE:插入和更新时填充字段
5.编写处理器Handler来进行自动填充,把下面的代码直接写在自己的handler包内即可
package com.water76016.ourtask.config.security.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 插入时的填充策略
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
/**
* 更新时的填充策略
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}