Mybatis-Plus的自动填充
前言:最近也在忙于学习公司的一些代码,业务,这篇Mybatis-Plus是前几天复习的,没有太多的时间做下笔记,因此熬了一会儿,相当于又复习了一遍,以加深自己的印象和帮助到各位小伙伴儿们😉😉。
最近还会继续更新,如果有什么需要改进的地方,还请大佬不吝赐教🤞🤞
小威在此先感谢诸佬了👏👏
@[toc]
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:目前大二,在一家满意的公司实习👏👏🎁如果大佬在准备面试,找工作,刷算法,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘
牛客部分使用反馈,个人感觉还不错,帮我找到了心仪的公司,希望各位伙伴儿们通过它也能提高不少🥂🥂🥂
以下正文开始
🍓Mybatis-Plus自动填充
在我们做项目的过程中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。
我们可以选择用普通的方法来自己填充,也可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作。
因此我们两个方法都介绍一遍。
首先用到我们上一篇的项目,我们需要给项目添加两个字段,并且需要在数据库中添加create_time,update_time字段。
private Date createTime;
private Date updateTime;
拿我们添加用户的demo举例,按照我们平常的做法,我们应该这样做:
@Test
public void insertUser(){
System.out.println(("----- insert method test ------"));
User user=new User();
user.setName("wangWu");
user.setId(8L);
user.setAge(21);
user.setCreateTime(new Date());
user.setUpdateTime(new Date());
user.setEmail("wangWU@qq.com");
int result = userMapper.insert(user);
System.out.println(result);
}
我们需要自己通过user对象设置CreateTime,UpdateTime属性,这样的方法当然可以运行的。
但是一旦所创建的对象比较多时,我们一直写一些重复的代码,会看起来很不舒服,因此,我们下面介绍如何通过Mybatis-Plus自动填充。
第一步,我们需要在实体类给对应的字段中添加相关的注解。
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
上面的第一个注解,fill是填充的意思,也就是在插入数据的时候给表自动填充,第二个则是在插入和更新数据的时候自动填充。
但是,光有这些还不够。我们应该自己设置一个类来进行配置。
实现元对象处理器接口
MetaObjectHandler接口是mybatisPlus提供给我们的一个扩展接口,我们可以利用这个接口在我们插入或者更新数据的时候,为一些字段指定默认值。
不要忘记添加 @Component 注解
package com.mpdemo.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);//根据名字设置属性值
this.setFieldValByName("updateTime",new Date(),metaObject);
this.setFieldValByName("version",1,metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
启动项目进行增添和修改测试,结果如下
- 点赞
- 收藏
- 关注作者
评论(0)