MybatisPlus之更新操作和自动填充处理

目录

更新操作

自动填充

方式一:数据库级别(工作中不建议使用)

方式二:代码级别


 

更新操作

 

    @Test
    public void testUpdate(){
        User user = new User();
        user.setId(2L);
        user.setName("鬼畜");

        //注意传入的参数是对象
        int i = userMapper.updateById(user);
        System.out.println(i);
    }

如果你再更新一个字段,查看日志你会发现走的SQL是一条,也就是它实现了动态SQL查询

MybatisPlus之更新操作和自动填充处理_第1张图片

 

 

自动填充

 

例如创建时间和修改时间字段,这些都是自动完成的,我们就需要和其他字段区分设置。

 

方式一:数据库级别(工作中不建议使用)

在表中新增字段create_time,update_time

MybatisPlus之更新操作和自动填充处理_第2张图片

然后修改实体类,新增两个字段

    private Date createTime;
    private Date updateTime;

再次执行更新操作,这里我执行了好几次,可以看到第一次创建和更新时间一致,之后就只有更新时间在变了

MybatisPlus之更新操作和自动填充处理_第3张图片

 

 

方式二:代码级别

首先你要把数据库中创建和更新时间的时间戳去掉,自动更新也去掉
MybatisPlus之更新操作和自动填充处理_第4张图片

在实体类上给属性添加自动填充注解

MybatisPlus之更新操作和自动填充处理_第5张图片

新建一个处理器来处理自动填充的注解,并注入到ioc容器中

import java.util.Date;

@Slf4j
@Component
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);
    }
}

现在我们先来执行以下新增方法,发现时间插入进来了

MybatisPlus之更新操作和自动填充处理_第6张图片

我们再来执行下更新方法,对劲吧~

MybatisPlus之更新操作和自动填充处理_第7张图片

 

 

 

 

你可能感兴趣的:([MyBatis-Plus])