- 创建时间,修改时间,这些操作一遍都是自动化完成的,我们不希望手动更新。
- 阿里巴巴开发手册:所有的数据库表:gmt_create,gmt_modified几乎所有的表都要配置上,而且需要自动化。
方式一:数据库级别:
- 但是最好不要这样做,因为如果我们工作了,最好不要修改数据库
- 每次向表中插入数据时,不需要插入create_time这一列的值,因为它有默认值,它会自动填充的。
- 再次测试插入方法时:
- 为什么只有最后一条语句实现插入时间?
因为我们在实体类中没有添加创建和更新时间字段。
方式二:代码级别:
- 删除数据库的默认值和更新操作:
就是把时间字段的设置都取消掉,只留时间字段。
- 把之前写的取消掉,在实体类属性添加注解:
- 查看TableField的源码发现:
- 编写处理器处理这个注解:
-
官网上填写如下:
@Slf4j@Componentpublic class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { log.info("start insert fill ...."); this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用) this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如<code>3.3.1.8-SNAPSHOT</code>) /* 上面选其一使用,下面的已过时(注意 strictInsertFill 有多个方法,详细查看源码) */ //this.setFieldValByName("operator", "Jerry", metaObject); //this.setInsertFieldValByName("operator", "Jerry", metaObject); } @Override public void updateFill(MetaObject metaObject) { log.info("start update fill ...."); this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用) this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如<code>3.3.1.8-SNAPSHOT</code>) /* 上面选其一使用,下面的已过时(注意 strictUpdateFill 有多个方法,详细查看源码) */ //this.setFieldValByName("operator", "Tom", metaObject); //this.setUpdateFieldValByName("operator", "Tom", metaObject); }}
- 再次执行插入测试:
最新评论
命令: nload
真是个良心站点哇,大公无私,爱了爱了
还可以直接搞一张映射表,存 uid | time | source_index, 第一次直接查对应的 time 选出前100, 第二次直接用 CompleteFuture 去分别用 source_in
干得漂亮,多个朋友堵条路
2021.2.2版本的不适用吧
现在还可以用么
激活码有用,感谢分享
激活码的地址打不开了