欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

实例详解MyBatis-plus自动填充功能

时间:2022-04-09 14:53:00|栏目:JAVA代码|点击:

什么是自动填充

有些表中会有更新时间、创建时间、更新人或者创建人这些字段。

每次对数据进行新增、删除、修改时都需要对这些字段进行设置。传统的做法是在进行这些操作前,对Entity的字段进行set设置,然后再进行操作。这种做法不仅容易忘记导致出错、而且代码会显得特别冗余。

虽然新增时间和修改时间可以使用数据库的时间,但是新增人和修改人就不能使用这样的功能。

所以MP就提供自动填充的功能,帮助自定设置这些字段的值,提升开发效率,代码也会显得特别优雅。

1.这个功能是做什么的呢?

有的时候,我们可能有这样子的需求,在插入(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.结果

综上所示,自动填充成功。

上一篇:springboot的java配置方式(实例讲解)

栏    目:JAVA代码

下一篇:浅析java中print和println的区别

本文标题:实例详解MyBatis-plus自动填充功能

本文地址:http://www.codeinn.net/misctech/198611.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有