Mybatis 一级缓存 保存date之后 在未提交事务之前再次获取date,数据不对等
问题:在springboot项目中,service方法添加了事务管理,先insert一条记录,在事务还未提交前,通过id查询这条记录,查询出来的结果的创建时间跟保存进去的创建时间总是相隔1s(偶尔)。
原因:mybatis 一级缓存,将数据保存的时候,会将时间 date ->2019/05/14 17:58:25 725 后面的毫秒数四舍五入,(坑爹啊),在事务还未提交之前,查询出来记录就被四舍五入了,结果 2019/05/14 17:58:26 ,但是保存进数据库的时间还是 2019/05/14 17:58:25 725 ,这样就会造成某些场景下,共用的date原本是同一个时间的,结果却是相差了1s。
解决:将 date时间 insert之前就 舍掉后面的毫秒数,就不会有这个问题了,至于更深层次的原因暂时未深究。有知道原理的道友可以留言告知一声哈