Exemple #1
0
 public void deferLoad(
     MappedStatement ms, MetaObject resultObject, String property, CacheKey key) {
   if (closed) throw new ExecutorException("Executor was closed.");
   DeferredLoad deferredLoad =
       new DeferredLoad(ms, resultObject, property, key, localCache, configuration);
   if (deferredLoad.canLoad()) {
     deferredLoad.load();
   } else {
     deferredLoads.add(
         new DeferredLoad(ms, resultObject, property, key, localCache, configuration));
   }
 }
Exemple #2
0
 @SuppressWarnings("unchecked")
 public <E> List<E> query(
     MappedStatement ms,
     Object parameter,
     RowBounds rowBounds,
     ResultHandler resultHandler,
     CacheKey key,
     BoundSql boundSql)
     throws SQLException {
   ErrorContext.instance()
       .resource(ms.getResource())
       .activity("executing a query")
       .object(ms.getId());
   if (closed) throw new ExecutorException("Executor was closed.");
   if (queryStack == 0 && ms.isFlushCacheRequired()) {
     clearLocalCache();
   }
   List<E> list;
   try {
     queryStack++;
     list = resultHandler == null ? (List<E>) localCache.getObject(key) : null;
     if (list != null) {
       handleLocallyCachedOutputParameters(ms, key, parameter, boundSql);
     } else {
       list = queryFromDatabase(ms, parameter, rowBounds, resultHandler, key, boundSql);
     }
   } finally {
     queryStack--;
   }
   if (queryStack == 0) {
     for (DeferredLoad deferredLoad : deferredLoads) {
       deferredLoad.load();
     }
     if (configuration.getLocalCacheScope() == LocalCacheScope.STATEMENT) {
       clearLocalCache(); // issue #482
     }
   }
   return list;
 }