insert,update方法自动加入创建人,创建时间,更新人,更新时间
以下答案来自chatgpt,暂时记录下
在MyBatis-Plus中实现公共字段自动填充(如创建人、创建时间、更新人、更新时间)可以通过使用自定义的 MetaObjectHandler 来实现。下面是一个简单的示例代码,演示如何在插入和更新操作时自动填充这些公共字段:
首先,创建一个自定义的 MetaObjectHandler 类,实现公共字段的自动填充逻辑:
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 填充创建时间
this.strictInsertFill(metaObject, "updateTime", Date.class, new Date()); // 填充更新时间
// 还可以填充创建人等字段
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 更新时自动填充更新时间
// 还可以填充更新人等字段
}
}
然后,在实体类中定义需要自动填充的公共字段,如创建时间、更新时间等,并使用注解标记:
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("your_table_name")
public class YourEntity {
// 公共字段
@TableField(fill = FieldFill.INSERT)
private Date createTime; // 创建时间
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime; // 更新时间
// 其他字段
private String name;
// 其他字段省略
}
最后,配置 MyBatis-Plus 的插件,告诉 MyBatis-Plus 使用我们自定义的 MetaObjectHandler:
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
@Configuration
@MapperScan("com.example.mapper")
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
@Bean
public MyMetaObjectHandler myMetaObjectHandler() {
return new MyMetaObjectHandler();
}
}
查看全部
通过以上步骤,就可以实现在插入和更新操作时自动填充公共字段。当进行插入或更新操作时,MyBatis-Plus会自动调用 MetaObjectHandler 中定义的方法来填充相应的字段。