为了实现 mybatis 自动填充时间字段的功能,需要在实体类中加入 createTime 和 updateTime 字段,并使用注解 @TableField(fill = FieldFill.INSERT) 标记 createTime 字段,在新增时自动填入当前时间,使用注解 @TableField(fill = FieldFill.INSERT_UPDATE) 标记 updateTime 字段,在更新时自动更新为当前时间,同时需要在 Mybatis 官网中查找对应版本的插件包并导入。
以下是一个示例:
@Data
public class User implements Serializable {
private Long id;
private String name;
private Integer age;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
在 mapper.xml 中编写相应的 SQL 语句,如下:
<insert id="insert" parameterType="com.example.demo.entity.User">
insert into user(name, age, create_time, update_time)
values(
#{name}, #{age}, #{createTime}, #{updateTime}
)
</insert>
还可以使用 Mybatis Plus 提供的自动填充功能。使用该功能需要在实体类中实现接口 IFieldFill,使用 @TableField(fill = FieldFill.INSERT_UPDATE) 标记 updateTime 字段并在实现接口时进行填充实现,如下:
@Data
@TableName(value = "user")
public class User implements Serializable, IFieldFill {
private Long id;
private String name;
private Integer age;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
@Override
public void insertFill(MetaObject metaObject) {
LocalDateTime now = LocalDateTime.now();
this.createTime = now;
this.updateTime = now;
}
@Override
public void updateFill(MetaObject metaObject) {
this.updateTime = LocalDateTime.now();
}
}
在 mapper.xml 中不需要再编写相应的 SQL 语句,Mybatis Plus 会自动处理填充操作。
示例代码可以在 Mybatis官网 (https://mybatis.org/mybatis-3/)、Mybatis-Plus官网 (https://mp.baomidou.com/guide/) 上找到。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis自动填充时间字段示例代码 - Python技术站