文章大纲
一.场景复现
二.问题原因
三.解决思路
四.总结
正文
1.场景复现:
方法执行报错,查看报错信息得知是MybatisePlus中getOne方法查出两条结果,通过控制台输出的日志执行后明确只有一条符合查询条件的记录,通过断点获取到代码跑出的两条记录,对比参数的确有一条不符合查询条件的记录也查出来了,但是这里打印对象却发现条件参数的属性值是一样, 但是根据这两个记录的id去数据库查出来的结果是不一致的。
2.问题原因:
由于我在查询之前修改了其中一条数据的属性,然后查询的时候又带上了这个属性导致,数据库的确存在了两条符合查询条件的记录,但是由于这个修改和后面的查询在同一个事务中,又因为getOne方法已报错导致之前的修改操作进行了回滚,所以出现了代码跑出的结果和手动查询结果不一致的问题。
3.解决思路:
修改代码执行顺序,将修改操作放在查询的后面执行即可。
4.总结:
在代码逻辑顺序上尽量做到先执行查询方法,修改方法放最后执行!!!