现象描述:
在Mapper.xml里面启用了全局缓存<cache/>
用户提交了更新操作,业务操作为status=2.
但页面查询的表状态还是status=1.查找数据库发现status=2
也就是MyBatis的缓存读到之前的status=1的未提交数据,但数据库确实已经改为status=2
分析原因:
页面有个操作,在Ajax的POST提交的同时。就开始重定向到页面查询页面。导致页面viewMatch读到之前状态为1的数据。
$.post("/ss/goMatch", {id: ${item.id!''}},
function(data){
layer.msg(data.msg);
layer.close(index);
}, "json");
window.open("/ss/viewMatch/${item.id}");
解决方法:
调整打开viewMatch的位置,让Ajax执行完成后再跳转。运行后恢复正常。
$.post("/ss/goMatch", {id: ${item.id!''}},
function(data){
layer.msg(data.msg);
layer.close(index);
window.open("/ss/viewMatch/${item.id}");
}, "json");