iBATIS DAO照射文件

iBATIS DAO映射文件
OR 映射
相对Hibernate 等ORM 实现而言,ibatis的映射配置更为简洁直接,下面是一
个典型的配置文件。
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
  <!--模块配置-->
  <typeAlias alias="user" type="com.ibatis.sample.User"/>

  <cacheModel id="userCache" type="LRU">
    <flushInterval hours="24"/>
    <flushOnExecute statement=" updateUser"/>
    <property name="size" value="1000" />
  </cacheModel>

  <!—Statement配置-->
  <select id="getUser"
    parameterClass="java.lang.String"
    resultClass="user"
    cacheModel="userCache"
  >
    <![CDATA[
    select
    name,
    sex
    from t_user
    where name = #name#
    ]]>
  </select>

  <update id="updateUser"
    parameterClass="user">
    UPDATE t_user
    SET
    name=#name#,
    sex=#sex#
    WHERE id = #id#
  </update>

</sqlMap>


可以看到,映射文件主要分为两个部分:模块配置和Statement配置。
模块配置包括:

Ø typeAlias节点:
定义了本映射文件中的别名,以避免过长变量值的反复书写,此例中通过
typeAlias节点为类"com.ibatis.sample.User"定义了一个别名"user",
这样在本配置文件的其他部分,需要引用"com.ibatis.sample.User"类时,
只需以其别名替代即可。

Ø cacheModel节点
定义了本映射文件中使用的Cache机制:

<cacheModel id="userCache" type="LRU">
  <flushInterval hours="24"/>
  <flushOnExecute statement="updateUser"/>
  <property name="size" value="1000" />
</cacheModel>

这里申明了一个名为"userCache"的cacheModel,之后可以在
Statement申明中对其进行引用:
<select id="getUser"
parameterClass="java.lang.String"
resultClass="user"
cacheModel="userCache"
>
这表明对通过id为"getUser"的Select statement获取的数据,使用
cacheModel "userCache"进行缓存。之后如果程序再次用此Statement
进行数据查询,即直接从缓存中读取查询结果,而无需再去数据库查询。

cacheModel主要有下面几个配置点:
l flushInterval :
设定缓存有效期,如果超过此设定值,则将此CacheModel的缓存清空。
l size:
本CacheModel中最大容纳的数据对象数量。
l flushOnExecute:
指定执行特定Statement时,将缓存清空。如updateUser操作将更
新数据库中的用户信息,这将导致缓存中的数据对象与数据库中的实际
数据发生偏差,因此必须将缓存清空以避免脏数据的出现。