mybatisplus自动填充属性值

MetaObjectHandler: 是mybatisplus提供的一个接口,,,这个接口定义了在执行插入和更新操作的时候的回调方法,,,允许你自定义实体对象的一些属性值,,比如: createTime,createBy,updateTime,updateBy 等

他有两个核心方法:

  • insertFill : 在执行插入操作时,,用于填充实体对象的默认值,,标记了@TableField(fill=FieldFill.INSERT) 的字段就会被填充
  • updateFill :在执行更新操作时调用,用于填充实体对象的默认值
java 复制代码
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "cc_user")
public class User {

    private Integer id;
    private String username;
    @TableField(fill = FieldFill.INSERT)
    private String createBy;
    private String updateBy;
    private Date createTime;
    private Date updateTime;
}
java 复制代码
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        System.out.println("插入填充方法被调用");
        this.setFieldValByName("createBy","waterkid",metaObject);
        this.setFieldValByName("updateBy","cc",metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        System.out.println("插入填充方法被调用");
        this.setFieldValByName("createBy","waterkid",metaObject);
        this.setFieldValByName("updateBy","cc",metaObject);
    }
}

测试:

java 复制代码
    @Test
    void contextLoads() {
   
        int hehe = userMapper.insert(User.builder().username("hehe").build());
    }
相关推荐
LSL666_4 天前
BaseMapper——新增和删除
java·开发语言·mybatis·mybatisplus
LSL666_4 天前
IService——使用和新增
java·开发语言·mybatisplus
LSL666_4 天前
5 MySQL驱动类选择与数据库连接 URL 时区配置
数据库·mysql·mybatis·mybatisplus
九皇叔叔2 个月前
【06】SpringBoot3 MybatisPlus 修改(Mapper)
java·spring boot·mybatis·mybatisplus
九皇叔叔2 个月前
【02】SpringBoot3 MybatisPlus 加入日志功能
java·mysql·mybatis·日志·mybatisplus
子非鱼9212 个月前
MyBatisPlus快速上手
数据库·spring boot·mybatisplus
DCTANT2 个月前
【原创】使用更优雅的方式改造MyBatisPlus逻辑删除插件
spring boot·后端·mysql·kotlin·mybatis·mybatisplus
回忆是昨天里的海3 个月前
Spring boot接入视图时的问题
mysql·mybatisplus·视图
咘噜biu3 个月前
多租户动态数据源插件dynamic-datasource简介
java·mybatisplus·动态数据源·多租户
阿拉斯攀登3 个月前
MyBatis-Plus 全面介绍 & Spring Boot 集成实战
java·spring boot·mybatisplus·mp