Ibatis3 mapper配置文件實例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//
EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<mapper>

 <select id="" parameterMap="" parameterType="" resultMap=""
  resultType="" useCache="true" flushCache="true" timeout="" fetchSize=""
  statementType="STATEMENT" resultSetType="FORWARD_ONLY">
  <!--
   statementType可以設置爲STATEMENT,PREPARED,CALLABLE,
   默認爲PREPARED,像在調用存儲過程時就可以使用CALLABLE類型
   resultSetType結果集類型,主要是說遊標,具有方向性,可以去
   FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE 默認根據數據庫驅動而定
  -->

 </select>

 <insert id="" useGeneratedKeys="true" keyProperty=""></insert>
 <!--
  useGenerateKeys是否使用數據庫自動生成的鍵(如自增列) 默認 false
  keyProperty將數據庫自動生成的鍵值賦值給哪一個字段值
 -->

 <!--ibatis還對不支持自動生成主鍵值的數據庫提供了主鍵值生成方案,如下是一個隨機數主鍵值:-->
 <insert id="insertAuthor" parameterType="domain.blog.Author">
  <selectKey keyProperty="id" resultType="int" order="BEFORE">
   select
   CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1
  </selectKey>
  <!--
   order可以設置爲BEFORE、AFTER。如果是BEFORE,會先select鍵值,賦值鍵值然後執行insert語句。
   如果是AFTER,那麼會先執行insert語句之後再select。默認AFTER
  -->
  insert into Author
  (id, username, password, email,bio,
  favourite_section)
  values
  (#{id}, #{username}, #{password}, #{email},
  #{bio},
  #{favouriteSection,jdbcType=VARCHAR}
  <!--
   定義特殊傳參類型 #{property,javaType=int,jdbcType=NUMERIC}
  -->
  )
 </insert>

 <!--sql定義重用的sql代碼-->
 <sql id="userColumns">
  id,username,password
 </sql>
 <select id="selectUsers" parameterType="int" resultType="hashmap">
  select
  <include refid="userColumns" />
  from some_table
  where id = #{id}
 </select>

 <resultMap type="" id="">

  <!--constructor屬性可以配置通過類構造函數注入屬性的一些參數-->
  <constructor>
   <idArg column="" javaType="" jdbcType="" typeHandler="" />
   <arg column="" javaType="" jdbcType="" typeHandler="" />
  </constructor>

  <!--
   id,result均將單個列的值映射到POJO中的單個簡單類型屬性(如int,double,Date等等)
   id映射主鍵,result映射普通屬性
  -->
  <id column="" javaType="" jdbcType="" property="" typeHandler="" />
  <result column="" javaType="" jdbcType="" property=""
   typeHandler="" />

  <!--association標籤定義了實體之間的關聯  -->
  <association property="">
   <id />
   <result />
   <association property=""></association>
   <collection property=""></collection>
   <discriminator javaType="">
    <case value=""></case>
   </discriminator>
  </association>

  <!--collection類似association對應POJO中的集合屬性 ,如List Map -->
  <collection property="" ofType=""></collection>

  <!--
   有時候我們從數據庫中得到的值不僅僅對應一種POJO,可能根據參數不同對應不懂的POJO,
   如車輛的屬性根據卡車、汽車而不同,那麼可以使用以下配置
  -->
  <discriminator javaType="int" column="vehicle_type">
   <case value="1" resultMap="carResult" />
   <case value="2" resultMap="truckResult" />
   <case value="3" resultMap="vanResult" />
   <case value="4" resultMap="suvResult" />
  </discriminator>
 </resultMap>

 <!--
  cache:配置命名空間內的緩存機制 cache-ref:引用兩一個命名空間的緩存配置
  緩存過期算法:
   LRU 最近最少使用
   FIFO 先進先出
   SOFT 只有當目前內存不足的情況下,JVM 在垃圾回收時纔會收回其包含的引用
   WEAK 只要JVM 啓動了垃圾回收機制,那麼WeakReference 所對應的對象就將被JVM 回收
 -->
 <cache eviction="" flushInterval="" readOnly="" size="" type=""></cache>
 <cache-ref namespace=""/>

</mapper>

發佈了37 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章