上一篇IBatis.net ORM初体验简单介绍了IBatis.net的基本应用.本篇介绍下IBatis.net的缓存应用.

还是接着上篇的代码来写..

首先在sqlmap.config中启用缓存

<setting cacheModelsEnabled="true"/>

然后新建一个xml:CacheAccount.xml

并在sqlmap.config中的sqlMaps节点配置

<sqlMaps>
   <sqlMap resource="Maps/Account.xml"/>
   <sqlMap resource="Maps/CacheAccount.xml"/>
</sqlMaps>

新建立的CacheAccount.xml如下

<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="CacheAccount" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
  <!--
  implementation="MEMORY"是设置缓存的实现方式,可以指定LRU、FIFO等,有点类似于内存的页替换策略。MEMORY是最常使用的一种方式。
  flushOnExecute设置的是当执行了这些语句时更新缓存  readOnly="false" serialize="true"
  -->
  <cacheModels>
    <cacheModel id="account-cache"  implementation="MEMORY" >
      <flushInterval hours="24"/>
      <flushOnExecute  statement="Account.sql_InsertOne"/>
      <!--<flushOnExecute  statement="sql_Delete"/>-->
      <flushOnExecute  statement="CacheAccount.sql_update"/>
      <property name="Type" value="Weak"/>
    </cacheModel>
  </cacheModels>
  <resultMaps>
    <resultMap id="Account-result"  class="Account">
      <result property="Id"    column="id"/>
      <result property="Item"    column="Item"/>
      <result property="Year"    column="Year"/>
      <result property="Month"    column="Month"/>
      <result property="Day"    column="Day"/>
      <result property="CreateOn"    column="CreateOn"/>
      <result property="Level"    column="Level"/>
    </resultMap>
  </resultMaps>
 
  <statements>
    <select id="sql_CacheSelect" resultMap="Account-result" cacheModel="account-cache" >
      select * from Accounts
    </select>
 
    <delete id="sql_Delete" parameterClass="int">
      delete from Accounts
      <dynamic prepend="where">
        <isParameterPresent property="id" prepend="">
          [id] = #id#
        </isParameterPresent>
      </dynamic>
    </delete>
 
    <update id="sql_update" parameterClass="Account">
      update Accounts set Item = #Item#
      where id = #Id#
    </update>
  </statements>
</sqlMap>

相关文章: