使用Mybatis-plus实现时间自动填充(代码直接可用)

目录

一. 搭建基础项目

二. 设置自动填充

一. 搭建基础项目

引入依赖

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--lombok 依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- swagger2 依赖 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <!-- Swagger第三方ui依赖 --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.6</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1.tmp</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> </dependencies>

controller

@RestController public class TestController { @Autowired private IProjectService projectService; @ApiOperation("新增项目") @PostMapping("/") public void addProjectWrite(@RequestBody Project project) { projectService.save(project); } }

service

public interface IProjectService extends IService<Project> { }

serviceImpl

@Service public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> implements IProjectService { }

Mapper

@Service public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> implements IProjectService { }

Pojo

@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("ts_project") @ApiModel(value="Project对象", description="撰写项目申请书的基本内容") public class Project implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private String id; private Integer workNumber; private Integer adminId; private String name; @ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date gmtCreate; @ApiModelProperty(value = "更新时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date gmtModified; }

application.yml 

server: # 端口 port: 8081 spring: # 数据源配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: root # Mybatis-plus配置 mybatis-plus: #配置Mapper映射文件 mapper-locations: classpath*:/mapper/*Mapper.xml # 配置MyBatis数据返回类型别名(默认别名是类名) type-aliases-package: com.xxxx.server.pojo configuration: # 自动驼峰命名 map-underscore-to-camel-case: fals

启动类

@SpringBootApplication @EnableScheduling @MapperScan("com.xxxx.server.mapper") public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class,args); } }

搭建完成 

此时执行操作,并不会在表中添加时间,如下:

二. 设置自动填充

创建MyMetaObjectHandler文件,实现自动填充

/** * 自动填充时间 */ @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("gmtCreate", new Date(), metaObject); this.setFieldValByName("gmtModified", new Date(), metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("gmtModified", new Date(), metaObject); } }

修改pojo类

@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("ts_project") @ApiModel(value="Project对象", description="撰写项目申请书的基本内容") public class Project implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private String id; private Integer workNumber; private Integer adminId; private String name; @ApiModelProperty(value = "创建时间") @TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date gmtCreate; @ApiModelProperty(value = "更新时间") @TableField(fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date gmtModified; }

在gmtCreate上增加   @TableField(fill = FieldFill.INSERT) 表示创建时间。

在gmtModified上增加 @TableField(fill = FieldFill.INSERT_UPDATE)表示修改时间。

gmtCreate和gmtModified需要与自定义方法中的字段相匹配。

此时执行操作,会在表中添加时间,如下:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持易知道(ezd.cc)。 

推荐阅读