//测试更新
@Test
public void testUpdate() {
User user = new User();
// 通过条件自动拼接sql;
user.setId(5L);
user.setName("狂神666");
user.setAge(18);
//注意:updateById 参数是一个对象
int i = userMapper.updateById(user);
System.out.println(i);
}
![](https://i-blog.csdnimg.cn/blog_migrate/b000a5a31c42c45078e1cba601d27263.png)
所有的sql都是自动帮你动态配置的 !
自动填充
创建时间、修改时间!这个操作一遍都是自动化完成的 ,我们不希望手动更新 !
阿里巴巴开发手册 : 所有的数据库表 : gmt_create、 gmt_modified几乎所有的表都有配置上 ! 而且需要自动化 !
方式一 : 数据库级别(工作中不允许你修改数据库)
1,在表中新增字段create_time、update_time
![](https://i-blog.csdnimg.cn/blog_migrate/4b7e8947060e64ded113d6edd59cb0d6.png)
2,再次测试插入方法,我们需要先把实体类同步 !
private Date createTime;
private Date updateTime;
再次更新查看结果即可
![](https://i-blog.csdnimg.cn/blog_migrate/cc1e7a189aef42d5a9137470aa62b40a.png)
方式二 : 代码级别
1,删除数据库的默认值,更新操作!
2,实体类属性上需要增加注解
//字段添加填充内容
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
3,编写处理器来处理这个注解即可 !
package com.example.mybatisplus.haandler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.Data;
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.....");
//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 fill.....");
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
4,测试插入
5,测试更新,观察时间即可 !