/** * @description TODO * @createTime 2016-4-19 上午11:20:47 * @fileName CacheInterceptor.java * @author yaojiamin */ private BoundSql createPageBoundSql(CacheHandlerBean cacheHandlerBean, BoundSql boundSql) { return new BoundSql( cacheHandlerBean.getMappedStatement().getConfiguration(), createCountSql(boundSql), boundSql.getParameterMappings(), cacheHandlerBean.getParameterObject()); }
/** * @description TODO * @createTime 2016-4-27 下午12:33:11 * @fileName CacheInterceptor.java * @author yaojiamin */ private <E> List<E> executeQuery( CacheHandlerBean cacheHandlerBean, BoundSql boundSql, CacheKey cacheKey, Executor executor) throws SQLException { return executor.query( cacheHandlerBean.getMappedStatement(), cacheHandlerBean.getParameterObject(), cacheHandlerBean.getRowBounds(), cacheHandlerBean.getResultHandler(), cacheKey, boundSql); }
/** * @description TODO * @createTime 2016-5-31 下午4:53:32 * @fileName CacheInterceptor.java * @author yaojiamin * @param boundSql * @param cacheKey */ @SuppressWarnings({}) public <E> List<E> query(Executor executor, CacheHandlerBean cacheHandlerBean) throws Exception { BoundSql boundSql = cacheHandlerBean.getMappedStatement().getBoundSql(cacheHandlerBean.getParameterObject()); CacheKey cacheKey = executor.createCacheKey( cacheHandlerBean.getMappedStatement(), cacheHandlerBean.getParameterObject(), cacheHandlerBean.getRowBounds(), boundSql); MetaObject metaPage = forObject(cacheHandlerBean.getParameterObject()); // 当需要分页查询时,将page参数里的当前页和每页数加到cachekey里 if (isNeedPagination(metaPage)) { executeQuery( cacheHandlerBean, createPageBoundSql(cacheHandlerBean, boundSql), cloneCacheKey(cacheKey), executor); Assert.isTrue(metaPage.getValue(Constants.TOTAL) != null, "Fail to count result!!!"); cacheKey.update(metaPage.getValue(Constants.PAGE_NO)); cacheKey.update(metaPage.getValue(Constants.PAGE_SIZE)); } return executeQuery(cacheHandlerBean, boundSql, cacheKey, executor); }