Interface Cache

All Known Implementing Classes:
BlockingCache, FifoCache, LoggingCache, LruCache, PerpetualCache, ScheduledCache, SerializedCache, SoftCache, SynchronizedCache, TransactionalCache, WeakCache

public interface Cache
SPI for cache providers.

One instance of cache will be created for each namespace.

The cache implementation must have a constructor that receives the cache id as an String parameter.

MyBatis will pass the namespace as id to the constructor.

 public MyCache(final String id) {
   if (id == null) {
     throw new IllegalArgumentException("Cache instances require an ID");
   } = id;
Clinton Begin
  • Method Details

    • getId

      String getId()
      The identifier of this cache
    • putObject

      void putObject(Object key, Object value)
      key - Can be any object but usually it is a CacheKey
      value - The result of a select.
    • getObject

      Object getObject(Object key)
      key - The key
      The object stored in the cache.
    • removeObject

      Object removeObject(Object key)
      As of 3.3.0 this method is only called during a rollback for any previous value that was missing in the cache. This lets any blocking cache to release the lock that may have previously put on the key. A blocking cache puts a lock when a value is null and releases it when the value is back again. This way other threads will wait for the value to be available instead of hitting the database.
      key - The key
      Not used
    • clear

      void clear()
      Clears this cache instance.
    • getSize

      int getSize()
      Optional. This method is not called by the core.
      The number of elements stored in the cache (not its capacity).
    • getReadWriteLock

      default ReadWriteLock getReadWriteLock()
      Optional. As of 3.2.6 this method is no longer called by the core.

      Any locking needed by the cache must be provided internally by the cache provider.

      A ReadWriteLock