更新操作:
@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); } }
测试插入:
结果:
测试更新-结果: