介绍
这篇文章将为大家详细讲解有关如何春天在引导中利用Mybatis +自动填充字段,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
加入依赖
下面就通过Mybatis +来完成字段自动填充,首先加入Mybatis +依赖:
& lt; dependency> ,,,& lt; groupId> com.baomidou ,,,& lt; artifactId> mybatis-plus-boot-starter ,,,& lt; version> 3.4.1 & lt;/dependency>
创建实体类,添加填充注解
创建一个实体类,然后在需要自动填充的属性上加注解<代码> @TableField(填补=FieldFill.INSERT) 代码>,<代码> @TableField(填补=FieldFill.INSERT_UPDATE) 代码>等注解。
@ data @TableName (“user") public class  UserEntity extends BaseEntity  { ,,,private static final long serialVersionUID =, 1 l; ,,,/* * ,,,,*,主键 ,,,*/,,,@TableId (=value “id",, type =, IdType.ASSIGN_ID) ,,,private Long id; ,,,/* * ,,,,*,姓名 ,,,*/,,,@TableField (“name") ,,,private String 名称; ,,,/* * ,,,,*,年龄 ,,,*/,,,@TableField (“age") ,,,private Integer 年龄; ,,,/* * ,,,,*,邮件 ,,,*/,,,@TableField (“email") ,,,private String 电子邮件; ,,,/* * ,,,,*,创建时间 ,,,*/,,,@TableField (=value “create_time",, fill =, FieldFill.INSERT) ,,,public Date createTime; ,,,/* * ,,,,*,修改时间 ,,,*/,,,@TableField (=value “modify_time",, fill =, FieldFill.INSERT_UPDATE) ,,,public Date modifyTime; }
其中填补属性为字段自动填充策略,可选的参数如下所示:
public enum FieldFill { ,,,/* * ,,,,*,默认不处理 ,,,*/,,,默认情况下, ,,,/* * ,,,,*,插入填充字段 ,,,*/,,,插入, ,,,/* * ,,,,*,更新填充字段 ,,,*/,,,更新 ,,,/* * ,,,,*,插入和更新填充字段 ,,,*/,,INSERT_UPDATE }
就直接创建一个映射器,来便于测试:
@Mapper public interface  UserMapper extends BaseMapper< UserEntity>, { }
实现元对象处理器接口
MyBatis +版本不同,实现方式可能会有些许不同,在3.4.1版本是实现MetaObjectHandler接口,低版本可能是继承MetaObjectHandler抽象类,来实现对应的方法。
下面为实现插入和更新数据的字段填充逻辑,在插入对象时,对创建时间<代码> createTime> 代码和修改时间<代码> modifyTime> 代码字段自动填充为当前时间,在更新对象时,将修改时间<代码> modifyTime 代码>修改为最新时间。
@ component public class  CommonMetaObjectHandler implements MetaObjectHandler  { ,,,/* * ,,,,*,创建时间 ,,,*/,,,private static final String FIELD_SYS_CREATE_TIME =,“createTime"; ,,,/* * ,,,,*,修改时间 ,,,*/,,,private static final String FIELD_SYS_MODIFIED_TIME =,“modifyTime"; , ,,,/* * ,,,,*,插入元对象字段填充(用于插入时对公共字段的填充) ,,,, ,,,,*,@param metaObject 元对象 ,,,*/,,@Override ,,,public void insertFill (MetaObject metaObject), { ,,,,,,,Date currentDate =, new 日期(); ,,,,,,,//,插入创建时间 ,,,,,,,if (metaObject.hasSetter (FIELD_SYS_CREATE_TIME)), { ,,,,,,,,,,,this.strictInsertFill (FIELD_SYS_CREATE_TIME, metaObject,还以为,Date.class, currentDate); ,,,,,,,} ,,,,,,,//,同时设置修改时间为当前插入时间 ,,,,,,,if (metaObject.hasSetter (FIELD_SYS_MODIFIED_TIME)), { null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何春天在引导中利用Mybatis +自动填充字段