mybatis

您所在的位置:网站首页 mybatisplus日期 mybatis

mybatis

2023-12-22 01:52| 来源: 网络整理| 查看: 265

@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 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("[email protected]"); 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), [email protected](String), 2020-06-19 08:44:17.474(Timestamp), 2020-06-19 08:44:17.474(Timestamp), 0(Integer)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3