刚开始的版本是3.2.0,在springboot聚合工程下,common公共API配置只有一个子模块可以使用,其它子模块无法自动生成时间。
MyMetaObjectHandler 在3.2.0版本下使用的方法 在3.3已过时
以下为3.3版本的jar配置
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this .strictInsertFill(metaObject, "createTime" , LocalDateTime. class , LocalDateTime.now()); this .strictUpdateFill(metaObject, "updateTime" , LocalDateTime. class , LocalDateTime.now()); // 起始版本 3.3.0(推荐使用) } @Override public void updateFill(MetaObject metaObject) { this .strictUpdateFill(metaObject, "updateTime" , LocalDateTime. class , LocalDateTime.now()); // 起始版本 3.3.0(推荐使用) } } |
并且实体类的属性由date改为localdatatime,这两者都可以与数据库中datetime字段属性匹配
1
2
3
4
5
|
@TableField (value = "create_time" ,fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField (value = "update_time" ,fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; |
自动装配到此成功。
别高兴!!!localdatetime在与前端交互时传输的数据为一个数组,其中年月日 时分秒,都被切割成一个一个字符串,用逗号间隔开了,如何传输给前端正常的时间字符串呢???
只需要在上述实体类中的成员变量加上@JsonFormat 注解就解决啦
1
2
3
4
5
6
7
|
@JsonFormat (pattern = "yyyy-MM-dd HH:mm:ss" ) @TableField (value = "create_time" ,fill = FieldFill.INSERT) private LocalDateTime createTime; @JsonFormat (pattern = "yyyy-MM-dd HH:mm:ss" ) @TableField (value = "update_time" ,fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; |
此时传输给前端的数据:
如此便大功告成!
坑:如果大家伙的有遇到spring容器@Compent无法使用的情况
在启动类上直接装配就好
1
2
3
4
5
6
7
8
|
@MapperScan ( "mapper文件所在的包名" ) //mybatisplus的配置 @ComponentScan ({ "MyMetaObjectHandler 所在的包名" , "三层架构的总包名" }) //如:com.bilibili 下有service controller dao @SpringBootApplication public class SpringRun { public static void main(String[] args) { SpringApplication.run(SpringRun . class , args); } } |
到此这篇关于mybatis-plus自动装配时间失效的解决的文章就介绍到这了,更多相关mybatis-plus自动装配时间失效内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/weixin_46356379/article/details/109254896