简单在ibatis中使用cache


  首先设置SqlMapConfig.xml中<settings/>节点的属性cacheModelsEnabled="true"

  

  然后在具体sqlmap文件中书写<cacheModel>

    <cacheModel id="product-cache" type="LRU"> 

      <flushInterval hours="24"/> 

      <flushOnExecute statement="insertProduct"/>

      <flushOnExecute statement="updateProduct"/> 

      <flushOnExecute statement="deleteProduct"/> 

      <property name="size" value="1000" /> 

    </cacheModel>

   

  最后给<select/>节点应用cache

    <select id="getAllProducts" cacheModel="product-cache">

      select * from PRODUCT

    </statement> 

    

复杂点的用法


  <cacheModel/>节点

  

    type="LRU"

      type属性可以指定cache的类型,ibatis支持3种缓存:

        MEMORY     没有统一的对象重用模式或内存不足的应用。

        LRU        经常使用的对象,这是性能最好的选择。

        FIFO       在短时间内持续引用,而后很可能不再使用。

      也可以使用外部cache如:

        type="OSCACHE"

     

    readOnly="true"

      默认true时缓存效果最好,可以减少更新。

      

    serialize="false"

      默认false,设true可以提高整体应用的性能。

        serialize只能应用于实现了Serializable接口的对象,而且和lazyLoadingEnabled="true"属性冲突。

        

    flushInterval

      自动刷新间隔时间。


    flushOnExecute

      在特定id的操作后,刷新cache,可选操作。


  手动刷新缓存

    [sqlmap].flushDataCache("product-cache")

      刷新cache当id="product-cache"

    [sqlmap].flushDataCache()

      刷新sqlmap内的所有cache