mybatis-plus自动装配时间失效
break away from 人气:0刚开始的版本是3.2.0,在springboot聚合工程下,common公共API配置只有一个子模块可以使用,其它子模块无法自动生成时间。
MyMetaObjectHandler 在3.2.0版本下使用的方法 在3.3已过时
以下为3.3版本的jar配置
@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字段属性匹配
@TableField(value = "create_time",fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime;
自动装配到此成功。
别高兴!!!localdatetime在与前端交互时传输的数据为一个数组,其中年月日 时分秒,都被切割成一个一个字符串,用逗号间隔开了,如何传输给前端正常的时间字符串呢???
只需要在上述实体类中的成员变量加上@JsonFormat 注解就解决啦
@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无法使用的情况
在启动类上直接装配就好
@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); } }
加载全部内容