使用Mybatis-plus实现时间自动填充(代码直接可用)
作者:枫陵
这篇文章主要介绍了使用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需要与自定义方法中的字段相匹配。
此时执行操作,会在表中添加时间,如下:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。