Mybatis一级缓存 去除

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32269385/article/details/77363946

项目中使用Mybatis时,由于其一级缓存SqlSession默认开启,使得相同SELECT语句查询Oracle数据库时会直接取出缓存中的结果,导致需要实时更新的结果获取不到.

这里简要说明一下使用和关闭Mybatis的SqlSession方法:

对于一些不需要动态刷新,需要查询的数据在数据库中不会短时间内出现变化的,单独使用一个Sqlsession

对于需要获取实时数据的,需要在Dao层的类中获取SqlSession,并使用该SqlSession获取对应的mapper映射接口对象,在获取实时数据之前使用sqlSession.clearChche()方法清除缓存即可.

需要缓存的数据:

	private TestTypeMapper mapper = null;

	public TestTypeDao() {
		mapper = DBConnUtil.getDbConnUtil().getTestTypeMapper();
	}

	/**
	 * 
	 * @return 所有的testType
	 * @throws SQLException
	 */
	public List<TestType> findAllTestTypes1() {
		return mapper.getTestTypes();
	}

需要实时获取的数据:

private TaskInfoMapper mapper = null;
private SqlSession session = null;
public TaskInfoDao() {
	this.session = new MybatisUtil().getSqlSession(true);
	this.mapper = session.getMapper(TaskInfoMapper.class);
	}
public List<TaskQuery> findTaskInfo(TaskQuery taskQuery) {
	session.clearCache();
	return mapper.findTaskInfo(taskQuery);
	}


展开阅读全文

没有更多推荐了,返回首页