个人记录:

  使用到了Lombok,需要导入对应的依赖,还需要安装Lombok插件即可。


一般数据库表中都会有两个字段,分别是创建时间和修改时间。为了方便每次创建或者修改数据时使对应的字段自动填充,Mybatis-plus就帮我们封装了自动填充的方法。

 

表结构:

 

代码实现

/**
 * pojo
 * 写一个基础类,添加创建时间和修改时间的属性,使用MybatisPlus的注解,属性fill选择对应策略,该声明告知Mybatis-Plus需要预留注入SQL字段
 */
 abstract class BasePojo {

    @TableField(fill = FieldFill.INSERT) //添加数据时,自动填充该字段
    private Date created;
    @TableField(fill = FieldFill.INSERT_UPDATE) //添加和修改数据时,自动填充该字段
    private Date updated;

}

 

对应表的实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User extends BasePojo {

    private Long id;
    private String mobile;
    private String password;

}

 

此时想要使用MybatisPlus的自动填充功能还需要具体的代码实现:

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {


    /**
     * 添加数据时,自动填充created字段
     * @param metaObject 元对象
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        Object created = getFieldValByName("created", metaObject);

        if (created == null) {
            //字段名,填充的值,填充的对象
            setFieldValByName("created", new Date(), metaObject);
        }

        Object updated = getFieldValByName("updated", metaObject);

        if (updated == null) {
            setFieldValByName("updated", new Date(), metaObject);
        }

    }

    /**
     * 修改数据时,自动填充updated字段
     * @param metaObject 元对象
     */
    @Override
    public void updateFill(MetaObject metaObject) {

        setFieldValByName("updated",new Date(),metaObject);

    }
}

MybatisPlus自动填充的原理:

  1.  填充原理是直接给实体类的属性设置值
  2. MetaObjectHandler提供的默认方法策略是:如果有值则不覆盖,如果值为null则不填充
  3. 字段必须声明TableField注解,属性fill选择对应的策略,告知Myabtis-plus需要预留注入SQL的字段
  4. 填充处理器MetaObjectHandlerSpringBoot需要声明@Component@Bean注入

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/xl99/p/14322407.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!