Mybatis Plus:自动填充与逻辑删除
自动填充
创建时间、修改时间!这些个操作一般都是自动化完成的,我们不希望手动更新!
阿里巴巴开发手册:所有的数据库表:gmt_create、gmt_modified几乎所有的表都要配置上!而且需要自动化!
方式一:数据库级别
1、在表中新增字段 create_time,update_time 2、我们需要先把实体类同步!
private Date createTime; private Date updateTime;
3、再次测试 方式二:代码级别,注意:时区问题少了八个小时 1、删除数据库的默认值 2、实体类字段属性上需要增加注解
//字段添加填充内容 @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;
3、编写处理器来处理这个注解即可!
@Slf4j @Component //一定不要忘记把处理器加到IOC容器中! public class MyMetaObjectHandler implements MetaObjectHandler { //插入时候的填充策略 @Override public void insertFill(MetaObject metaObject) { log.info("start insert file..."); //default MetaObjectHandler // setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject) { this.setFieldValByName("createTime",new Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); } //更新时候的填充策略 @Override public void updateFill(MetaObject metaObject) { log.info("start insert file..."); this.setFieldValByName("updateTime",new Date(),metaObject); } }
4、测试插入
5、更新时间
逻辑删除
物理删除:从数据库中直接移除 逻辑删除:在数据库中没有被移除,而是通过一个变量来让他失效!deleted = 0 => deleted = 1
管理员可以查看被删除的记录!防止数据的丢失!类似于回收站!
测试一下:
1、在数据表中增加一个 deleted 字段 2、实体类中增加属性
@TableLogic //逻辑删除 private Integer delete;
3、配置!
// 逻辑删除组件 @Bean public ISqlInjector sqlInjector() { return new LogicSqlInjector(); }
# 配置逻辑删除 mybatis-plus.global-config.db-config.logic-delete-value=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0
4、测试一下 记录依旧在数据库,但是值却已经变化了
上一篇:
IDEA上Java项目控制台中文乱码