<?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>