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

@TableField 注解

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

复制代码
1
2
3
4
5
6
//字段插入自动填充 @TableField(fill = FieldFill.INSERT) private Date createTime; //字段更新自动填充 @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;

2.看看@TableField的源码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@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,不填充

复制代码
1
2
3
4
5
6
7
8
public enum FieldFill { DEFAULT, INSERT, UPDATE, INSERT_UPDATE; private FieldFill() { } }

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@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.测试

复制代码
1
2
3
4
5
6
7
8
9
10
@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自动回填 }
复制代码
1
2
3
4
5
6
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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部