service层多次调用Dao层的同一个方法(Java)

service层多次调用Dao层的同一个方法(Java)

问题描述:

我在service层多次调用Dao层的同一个方法,第一次调用时能够执行dao的方法,但是第一次以后就没有执行dao的方法,直接返回了上次执行的结果。这是怎么回事呢?

如果是mybatis的话执行同一个查询语句是有缓存的

我感觉应该是你对象赋值的问题,第一次执行dao查询,返回数据,如果数据什么的没有改变,这个SQL会被缓存的,下一次直接走缓存。但是我感觉你这个不应该是缓存的问题,首先你要排查,数据库值有什么变化没有。如果你多次dao执行的结果都是一样的,那就没有什么问题。如果多个dao执行的结果是不一样的,你就看下dao层的返回结果。

你如果没有做update或者delete的话,那你查出来的数据,就是一样的;人家第二次查询的时候,直接走一级缓存了,这本就是正常的

肯定是缓存,只是从你的描述不能确定是那一层加的缓存。有可能service发现缓存有数据就不去dao了。

如果你不作添加修改删除操作,每次都返回上一次的结果,我觉得没问题