关于MyBatis-Plus自动更新时间的小坑

MySQL数据表

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'

说明:在不做调整的情况下,如果从数据库查询出对象后,即便更新了除updateTime外的字段,也无法实现自动更新updateTime在数据库中的值

解决方案

/**
 * 更新时间
 */
@TableField(update = "now()")
private LocalDateTime updateTime;

通过查看源代码,我们可以知道

// 源代码
/**
 * 

* 字段 update set 部分注入, 该注解优于 el 注解使用 *

*

* 例如:@TableField(.. , update="%s+1") 其中 %s 会填充为字段 * 输出 SQL 为:update 表 set 字段=字段+1 where ... *

*

* 例如:@TableField(.. , update="now()") 使用数据库时间 * 输出 SQL 为:update 表 set 字段=now() where ... *

*/
String update() default "";

测试方法

@PostMapping("/test")
public void test() {
     
	User user = userService.getById(2);
	user.setNickName("Mo");
	userService.saveOrUpdate(user);
}

你可能感兴趣的:(MyBatis-Plus,Spring,Boot,Java进化之旅,日期自动更新,MyBatis-Plus,Spring,Boot)