个人记录:
使用到了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自动填充的原理:
- 填充原理是直接给实体类的属性设置值
- MetaObjectHandler提供的默认方法策略是:如果有值则不覆盖,如果值为null则不填充
- 字段必须声明TableField注解,属性fill选择对应的策略,告知Myabtis-plus需要预留注入SQL的字段
- 填充处理器MetaObjectHandler在SpringBoot需要声明@Component或@Bean注入
内容来源于网络如有侵权请私信删除
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!