mybatis-plus自动装配时间失效的解决
短信预约 -IT技能 免费直播动态提醒
刚开始的版本是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);
}
}
到此这篇关于mybatis-plus自动装配时间失效的解决的文章就介绍到这了,更多相关mybatis-plus自动装配时间失效内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341