亲宝软件园·资讯

展开

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);
	}
}

加载全部内容

相关教程
猜你喜欢
用户评论