我是靠谱客的博主 欣慰绿草,最近开发中收集的这篇文章主要介绍mybatis-plus的自动填充时间,@TableField 注解,@TableField 注解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

@TableField 注解

填充策略主要是告诉他我啥时候开始填充,
1。在实体类加上@TableField 注解,

//字段插入自动填充
@TableField(fill = FieldFill.INSERT)
private Date createTime;
//字段更新自动填充
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

2.看看@TableField的源码

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
public @interface TableField {
String value() default "";
boolean exist() default true;
String condition() default "";
String update() default "";
FieldStrategy insertStrategy() default FieldStrategy.DEFAULT;
FieldStrategy updateStrategy() default FieldStrategy.DEFAULT;
FieldStrategy whereStrategy() default FieldStrategy.DEFAULT;
FieldFill fill() default FieldFill.DEFAULT;
boolean select() default true;
boolean keepGlobalFormat() default false;
JdbcType jdbcType() default JdbcType.UNDEFINED;
Class<? extends TypeHandler> typeHandler() default UnknownTypeHandler.class;
String numericScale() default "";
}

其中的FieldFill 就是填充的策略,默认 FieldFill.DEFAULT,不填充

public enum FieldFill {
DEFAULT,
INSERT,
UPDATE,
INSERT_UPDATE;
private FieldFill() {
}
}

DEFAULT, 默认,不填充
INSERT, 插入时填充
UPDATE, 更新时填充
INSERT_UPDATE; 插入更新都填充
3。要写处理器handler,去告诉到底填充那几个字段

@Slf4j
@Component//记得加到容器
public class MybatisObjectHandler implements MetaObjectHandler {
//插入时的填充出的略
@Override
public void insertFill(MetaObject metaObject) {
log.info("star insert fill...");
//setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
//更新时填充
@Override
public void updateFill(MetaObject metaObject) {
log.info("star update fill...");
//setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}

this.setFieldValByName(“createTime”,new Date(),metaObject);
createTime就是要填充的。

4.测试

@Test
public void insetTest(){
User user=new User();
user.setAge(19);
user.setEmail("code@qq.com");
user.setName("mzh");
int result=userMapper.insert(user);//自动生成id
System.out.println("result"+result);
System.out.println("user"+user);///id自动回填
}
JDBC Connection [HikariProxyConnection@1621615881 wrapping com.mysql.cj.jdbc.ConnectionImpl@2e13f304] will not be managed by Spring
==>
Preparing: INSERT INTO user ( name, age, email, create_time, update_time, version ) VALUES ( ?, ?, ?, ?, ?, ? )
==> Parameters: meng(String), 19(Integer), code@qq.com(String), 2020-06-19 08:44:17.474(Timestamp), 2020-06-19 08:44:17.474(Timestamp), 0(Integer)
<==
Updates: 1

最后

以上就是欣慰绿草为你收集整理的mybatis-plus的自动填充时间,@TableField 注解,@TableField 注解的全部内容,希望文章能够帮你解决mybatis-plus的自动填充时间,@TableField 注解,@TableField 注解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部