mybatis-plus自动装配时间失效的解决

刚开始的版本是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自动装配时间失效内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mybatis自动填充时间字段示例代码

    前言 对于实体中的created_on和updated_on来说,它没有必要被开发人员去干预,因为它已经足够说明使用场景了,即在插入数据和更新数据时,记录当前时间,这对于mybatis来说,通过拦截器是可以实现的,记得之前说过在jpa中实现的方法,主要通过jpa的注解实现的,因为今天的mybatis需要用到java的拦截器. 下面话不多说了,来一起看看详细的介绍吧 定义两个注解 @Retention(RetentionPolicy.RUNTIME) @Target( {ElementType.F

  • java利用mybatis拦截器统计sql执行时间示例

    可以根据执行时间打印sql语句,打印的sql语句是带参数的,可以拷贝到查询分析器什么的直接运行 复制代码 代码如下: package mybatis; import java.text.DateFormat;import java.util.Date;import java.util.List;import java.util.Locale;import java.util.Properties; import org.apache.ibatis.executor.Executor;import

  • mybatis-plus 通用字段自动化(如逻辑删除和更新时间等)

    一般来说某些项目比较规范的情况下,大多数表都会有逻辑删除字段和通用字段,例如更新时间,创建时间,更新人,创建人等等,但是在代码开发上会产生很多冗余的代码,逻辑删除的话,自己写比较繁琐,而且容易有遗漏逻辑. 本来打算自己写切面去实现,偶然发现mybatis-plus已经帮封装实现了,试了一下,很好用,所以分享一下. 逻辑删除 逻辑删除的意思就是某些业务表,在用户删除某条数据的时候,不真正删除,而是将此数据某字段改成类似"已删除",而查询语句.更新语句等会忽略此条被逻辑删除的数据. 这里就

  • mybatis统计每条SQL的执行时间的方法示例

    背景 最近面试经常被问到关于数据库的事务的问题,可能平时我就知道加个注解@Transactional之后就一脸懵逼的.现在发现这一块真的是常常被忽略了,然而面试官就是最喜欢这种看是不常用,但是非常重要的问题,进而达到出其不意攻其不备.不吹水了,开始正文. 方案一:切面编程@Aspect 此方案主要是通过环绕切面的方式将mapper包下的接口方法,然后前后计算时间差即可.这就是典型的AOP知识,不过这种计算比较粗糙,但是也是个办法.具体方法如下: @Aspect @Component @Slf4j

  • Mybatis-Plus根据时间段去查询数据的实现示例

    业务需求:在前端界面选择开始时间.结束时间,后台根据拿到的开始.结束时间去数据库中查询该段时间的数据集返回给前端界面. 1.前端我使用的是elementUI和vue框架,最好是在前端界面进行一个简单的校验规则,对比一下开始时间和结束时间的大小,校验的代码很简单,直接在触发查询按钮的函数前面加入校验即可.代码如下: if(this.StafPsnClctDetlDFormQuery.startTime >= this.StafPsnClctDetlDFormQuery.endTime){ this

  • MybatisPlus自带的queryWrapper实现时间倒序方式

    目录 MybatisPlus自带queryWrapper时间倒序 使用queryWrapper解决字符串中含数字的排序问题 造成的原因 解决办法 MybatisPlus自带queryWrapper时间倒序 queryWrapper.select().orderByDesc("create_time"); 使用queryWrapper解决字符串中含数字的排序问题 今天遇到了Oracle数据库字符串(含数字)排序问题,这里记录的是如何用MyBatis-Plus的queryWrapper条件

  • Mybatis和Mybatis-Plus时间范围查询方式

    一.mysql 1.传入时间范围参数类型是字符串 <if test="startTime!=null and startTime.trim() neq ''"> and date_format(create_time,'%Y-%m-%d %H:%i:%s') >= str_to_date(#{startTime},'%Y-%m-%d %H:%i:%s') </if> <if test="endTime!=null and endTime.t

  • Mybatis-plus实现主键自增和自动注入时间的示例代码

    mybatis-plus依赖导入 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency> 建议使用3.3.0后的版本. 导入mybatis-plus就不用导入mybatis了,冲突! 连接数据库 sp

  • MyBatis-Plus 修改和添加自动填充时间方式

    MyBatis-Plus 修改和添加自动填充时间 数据库字段设置: `valid_verify_time` datetime DEFAULT NULL COMMENT '有效性审核时间', 实体类设置: @JsonSerialize:序列化 @JsonDeserialize:反序列化 LocalDateTimeSerializer:JDK时间序列化规则 @ApiModelProperty(value = "有效性审核时间") @TableField(fill = FieldFill.U

  • mybatis设置sql执行时间超时时间的方法

    存在这样的场景,当一些比较耗时的查询时,如果不中断,则会导致数据库堵塞,进而会拖垮整个数据库服务的正常运行. 1.如果你使用的是HikariCP连接池的话,可以在配置文件设置connetion-timeout这个属性(如application.properties) 2.如果你使用的是其他链接池,比如tomcat连接池,同时持久化框架用的是mybatis的话,那可以这样设置 2.1 在配置文件中设置全局的sql执行超时时间(单位s): mybatis.configuration.default-

随机推荐