mybatisplus----CRUD操作之更新操作(以及日期的自动填充的两种办法)

 

更新操作:

    @Test
//测试更新
    void testUpdate() {
        User user = new User();
        user.setId(5L);
        user.setName("瓜瓜");
        //虽然方法名是一个byId,但是传入的是一个对象
        int len = userMapper.updateById(user);
        System.out.println(len);
        
    }

 

 

 

自动填充


创建时间、修改时间!这些个操作一遍都是自动化完成的,我们不希望手动更新!


阿里巴巴开发手册:所有的数据库表:gmt-create,gmt-modified几乎所有的表都要配置上!而且需要自动化!

 

自动填充的两种方式:

一:数据库级别:(工作中是不允许修改数据库这样做的)

1、在表中新增字段create time,update time

 

 

 2、再次测试插入方法,我们需要先把实体类同步!

  private Date createTime;
  private Date updateTime;

 

 

 

 

 

二:代码级别

1、删除数据库的默认值、更新操作!

 

 

 2、实体类字段属性上需要增加注解

   @TableField(fill =FieldFill.INSERT)
    private Date createTime;
    @TableField(fill =FieldFill.INSERT_UPDATE)
    private Date updateTime;

 

 

3、编写处理器来处理这个注解即可!

package com.hui.handler;

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.util.Date;

@Slf4j//日志打印
@Component//一定不要忘记吧处理器添加到IOC容器中
public class MymetaObjectHandler implements MetaObjectHandler {
    @Override //插入时的填充策略
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill...");
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);


    }

    @Override //更新时的填充策略
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill...");
        this.setFieldValByName("updateTime", new Date(), metaObject);

    }
}

 

 

测试插入:

结果:

 

 

测试更新-结果:

 

posted @ 2020-11-13 13:30  Joker-0927  阅读(453)  评论(0编辑  收藏  举报
// 侧边栏目录