mybatis和ignite结合使用

       在mybatis中,有一级缓存和二级缓存,其中二级缓存主要针对的一个namespace级别的缓存控制,按照mybatis的配置说明,只要按照规范实现org.apache.ibatis.cache.Cache,就可以作为二级缓存使用。

      apache这些年还出了一个功能强大的缓存框架ignite,针对mybatis有一个缓存的实现类org.mybatis.caches.ignite.IgniteCacheAdapter,此类的maven位置如下:

  <dependency>
    <groupId>org.mybatis.caches</groupId>
    <artifactId>mybatis-ignite</artifactId>
    <version>1.0.5</version>
  </dependency>


当然引入这个包之前,需要依赖spring配置,mybatis配置和ignite配置。

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.3</version>
        </dependency>


 <dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-core</artifactId>
    <version>${ignite.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-spring</artifactId>
    <version>${ignite.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-indexing</artifactId>
    <version>${ignite.version}</version>
</dependency>

其中:

         <ignite.version>2.1.1</ignite.version>

spring配置略...

public IgniteCacheAdapter(String id) {
    // id属性一般为mapper.xml文件的namespace,避免重复
    if (id == null)
      throw new IllegalArgumentException("Cache instances require an ID");

    CacheConfiguration cacheCfg = null;

    try {
      DefaultListableBeanFactory factory = new DefaultListableBeanFactory();

      new XmlBeanDefinitionReader(factory).loadBeanDefinitions(new FileSystemResource(new File(CFG_PATH)));

      cacheCfg = (CacheConfiguration) factory.getBean("templateCacheCfg");

      cacheCfg.setEvictionPolicy(null);
      cacheCfg.setCacheLoaderFactory(null);
      cacheCfg.setCacheWriterFactory(null);

      // overrides template cache name with the specified id.
      // 针对每个namespace有一个cacheCfg,保证不同的表在不同的二级缓存实例中
      cacheCfg.setName(id);
    } catch (NoSuchBeanDefinitionException | BeanDefinitionStoreException e) {
      // initializes the default cache.
      log.warn("Initializing the default cache. Consider properly configuring '" + CFG_PATH + "' instead.");

      cacheCfg = new CacheConfiguration(id);
    }

    cache = ignite.getOrCreateCache(cacheCfg);

    this.id = id;
  }


配置之后即可使用


猜你喜欢

转载自blog.csdn.net/u014112608/article/details/77749816