1、需要实现元对象字段填充控制器抽象类,如下代码
package com.example.mybatisplus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
/**
* mybatisplus字段填充器的实现
* 实现公共字段的自动写入
*/
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createdAt",LocalDateTime.now(),metaObject);
this.setFieldValByName("updatedAt",LocalDateTime.now(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updatedAt",LocalDateTime.now(),metaObject);
}
}
fieldName要注意对应的生成的实体字段,不是数据库对应字段,否则无效
2、在生成的实体字段,@TableField增加fill填充,并写入填充的时机是新增还是修改
@TableField(value = "CREATED_AT",fill = FieldFill.INSERT)
private LocalDateTime createdAt;
@TableField(value = "UPDATED_AT", fill = FieldFill.INSERT_UPDATE )
private LocalDateTime updatedAt;
在此过程中可能会出现的错:
修改或者插入的时候报类型无效,java.sql.SQLException: 无效的列类型: 1111
分析原因,可能是某个字段的值为null,要么就是字段填充器没有设置默认值,但是又在@TableField设置了自动填充文章来源:https://www.toymoban.com/news/detail-798733.html
综上,需要字段填充默认值,就一定需要实现MetaObjectHandler类中的方法文章来源地址https://www.toymoban.com/news/detail-798733.html
到了这里,关于mybatisplus在新增或者修改时设置字段自动填充的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!