1.什么是mp的自动填充?这个功能是做什么的呢?
有的时候,我们可能有这样子的需求,在插入(insert)或者更新数据(update)的时候可以自动填充数据,比如密码,version等。在mp中为我们提供了这种功能,非常的方便!
2.下面用一个例子来学习这个功能
2.1添加注解@TableField(),这个注解里面的fill提供了填充的功能
@TableField(fill = FieldFill.INSERT) //插入时进行填充
private String password;
FirledFill提供了以下几种模式,根据情况可以自己进行选择
public enum FieldFill {
DEFAULT, //默认不进行处理
INSERT, //插入的时候填充字段
UPDATE, //更新的时候填充字段
INSERT_UPDATE; //插入和更新的时候填充字段
private FieldFill() { //构造方法
}
}
2.2编写MyMetaObjectorHandler,实现源对象字段填充控制器抽象类,根据需求实不同的方法,这里是实现一个插入填充的方法
public class MyMetaObjectHandler implements MetaObjectHandler {
//插入填充
@Override
public void insertFill(MetaObject metaObject) {
Object password = getFieldValByName("password", metaObject);
if (ObjectUtils.isNull(password)) {
setFieldValByName("password", "88888888", metaObject);
}
}
//更新填充
@Override
public void updateFill(MetaObject metaObject) {
}
}
2.3将自定义的MyObjectHandler进行bean注入MybatisPlusConfig中
@Configuration
public class MybatisPlusConfig {
@Bean //插入填充
public MyMetaObjectHandler myMetaObjectHandler(){
return new MyMetaObjectHandler();
}
}
3.测试
@Test
public void test() {
User user = new User();
user.setAge(29);
user.setEmail("test@163.com");
user.setUserName("guanyu");
user.setName("关羽");
user.setAddress("上海");
// user.setPassword("123456"); //将密码进行注释,如果插入填充生效的话,数据库默认就填充了上面的88888888为password的值
int result = userMapper.insert(user);
System.out.println("result=" + result);
System.out.println(user.getId());
}
4.结果
综上所示,自动填充成功。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章