上一篇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>