自己学jsp的时候写了一个数据统计页面,写了个数据统计页面。数据是通过Mybatis连接数据库,但是当数据库更新数据时,页面的数据并没有变。
问题原因:因为mybatis写的连接数据库的sqlsession是复用的,通过一个mybatisUtil去获取一共静态sqlSession对象,也就是都复用这个会话去查询。
所以就代表下一次请求页面的时候获取的会话还是上一次的SQLSession,也就是上一次的会话查询到的什么,这一次就是什么。因为一个会话内是有缓存的,也就是一级缓存。
SqlSession级别的缓存,同一个SqlSession的发起多次同构查询,会将数据保存在一级缓存中。
解决办法:
当数据改变的时候清除SQLSession缓存即可。
sqlSession.clearCache();