我正在使用Tomcat8.5和mybatis构建我的web应用程序。然而,奇怪的是,当我直接从mysqlworkbench更改数据库中的数据时,在执行sql(发送get请求和获取数据)时,它并没有反映在我的应用程序上。当我重新启动tomcat服务器时,就会反映出这一点。我认为这是某种缓存问题,所以我在mybatis配置中禁用了缓存。
<settings>
<setting name="cacheEnabled" value="false" />
<setting name="localCacheScope" value="STATEMENT"/>
</settings>
另外,我直接使用sqlsession.clearcache(),但它仍然获取旧数据。
public class ProductDao {
private SqlSession sqlSession;
public ProductDao() {
sqlSession = DbUtil.getSqlSession();
}
public List<Product> getProductsByOrder(String order) {
sqlSession.clearCache();
System.out.println("fetching data from server");
List<Product> productList = sqlSession.selectList("ProductMapper.getProductsByOrder", order);
System.out.println(productList.get(0).getProductName());
//sqlSession.clearCache(); it does not work
return productList;
}
因此,我认为缓存发生在tomcat中,但我非常怀疑,因为当我获取数据库中的产品列表时,会调用“getProductsBylder”,并记录“从服务器获取数据”。具体地说,当我在mysqlworkbench中将productname从test1更改为test2时,下面的日志 System.out.println(productList.get(0).getProductName());
仍显示旧产品名称test1。
暂无答案!
目前还没有任何答案,快来回答吧!