Mybatis-Plus自动填充的实现示例

2022-10-16,,

在常用业务中有些属性需要配置一些默认值,mybatis-plus提供了实现此功能的插件。在这里修改user表添加 create_time 字段和 update_time 字段,在user类中添加对应属性。

1、为需要自动填充的属性添加注解 @tablefield

提供了4种自动填充策略:default,默认不处理。insert,插入填充字段。update,更新填充字段。insert_update,插入和更新填充字段。

@data
public class user {
  private long id;
  private string name;
  private integer age;
  private string email;

  @tablefield(fill = fieldfill.insert)
  private date createtime;
  @tablefield(fill = fieldfill.insert_update)
  private date updatetime;
}

2、实现字段填充控制器,编写自定义填充规则

实现 metaobjecthandler 接口,实现 insertfill 和 updatefill 方法,此处的 create_time 和update_time字段需要插入时填充值, 只有 update_time 字段在修改时需要填充,所以策略如下。

//需要将自定义填充控制器注册为组件

@component
public class mymetaobjecthandler implements metaobjecthandler {

  private static final logger logger= loggerfactory.getlogger(mymetaobjecthandler.class);

  //insert操作时要填充的字段
  @override
  public void insertfill(metaobject metaobject) {
    logger.info("start insert fill ...");
    //根据属性名字设置要填充的值
    this.setfieldvalbyname("createtime",new date(),metaobject);
    this.setfieldvalbyname("updatetime",new date(),metaobject);
  }

  //update操作时要填充的字段
  @override
  public void updatefill(metaobject metaobject) {
    logger.info("start insert fill ...");
    this.setfieldvalbyname("updatetime",new date(),metaobject);
  }
}

3、插入数据测试

@runwith(springrunner.class)
@springboottest
public class crudtest {
  @autowired
  private usermapper usermapper;

  @test
  public void testinsert(){
    user user = new user();
    user.setname("jack11");
    user.setage(20);
    user.setemail("4849111@qq.com");

    int result= usermapper.insert(user);
    system.out.println(result);
    system.out.println(user);
  } 
}

4、修改数据测试

@test
public void testupdate(){
  user user = new user();
  user.setid(2l);
  user.setname("jackie");
  int result = usermapper.updatebyid(user);
  system.out.println(result);
}

一次插入数据后,create_time和update_time都被填充了设置的时间,做update操作后只有update_time的进行了填充修改。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

《Mybatis-Plus自动填充的实现示例.doc》

下载本文的Word格式文档,以方便收藏与打印。