确认
- [X] 我的版本是最新版本, 我的版本号与 version 相同, 并且项目里无依赖冲突
- [X] 我已经在 issue 中搜索过, 确认问题没有被提出过
- [X] 我已经修改标题, 将标题中的 描述 替换为遇到的问题
功能改进
public class DatabaseCrudHandle implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
public class AbstractEntity implements Serializable {
private static final long serialVersionUID = -5713805310868253100L;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(value = "create_time", fill = FieldFill.INSERT)
public Date createTime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
public Date updateTime;
}
我通过重写Handler方法并且配合TableField注解的方式现在成功的在数据创建service.save(entity)中实现create_time和update_time的自动填充
@RequestMapping("/insert")
public User insert() {
User user = new User();
user.setName("xxxxx");
user.setAge(38);
user.setAddress("北京");
service.save(user);
return user;
}
@RequestMapping(value = "/updateByWrapper", method = RequestMethod.POST)
public User updateByWrapper(User u) {
UpdateWrapper<User> wrapper = new UpdateWrapper<User>();
wrapper.set(Objects.nonNull(u.getName()), "name", u.getName());
wrapper.set(Objects.nonNull(u.getAge()), "age", u.getAge());
wrapper.set(Objects.nonNull(u.getAddress()), "address", u.getAddress());
wrapper.eq("id", u.getId());
service.update(wrapper);
return u;
}
但是调用service.update(UpdateWapper)方法时遇到问题,如果我未指定create_time和update_time则此方法会自动修改create_time和update_time为当前时间,请问我的配置哪里有问题吗? 谢谢!
参考资料
No response
Comment From: miemieYaho
看文档
Comment From: lijia150
看文档
您好 我确实按照文档写的,我现在的问题是:根据文档中的说明“用update(UpdateWrapper)方法不会自动填充”,但是我现在的真实情况确实是自动填充了“createTime和updateTime字段为当前时间”
Comment From: miemieYaho
文档教你用setFieldValByName了吗?