SQL映射文件常用元素:
1.select
屬性: id 在命名空間內唯一標識
parameterType 將傳入該select語句的參數類型的完全限定名或別名
resultType 該條select語句將要返回的類型的完全限定名或別名
resultMap 外部resultMap的命名引用,不可和resultType同時使用
flushCache 設置為true時,則在任何時候只要語句被調用,都會導致本地緩存和二級緩存都被清空,默認為false。
useCache 設置為true時,將會導致本條語句的結果被二級緩存,默認為true
timeout 驅動程序等待數據庫返回請求結果的秒數,默認值為unset(依賴驅動)
fetchSize 嘗試影響驅動程序每次批量返回的結果行數和這個設置值相等,默認為unset(依賴驅動)
statementType 值為STATEMENT、PREPARED、CALLABLE。默認值為PREPARED
resultSetType 結果集的類型,值為FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE。默認為unset(依賴驅動)
databaseId 如果配置了databaseIdProvider,MyBatis會加載所有不帶databaseId或匹配當期databaseId的語句,若帶或不帶的語句都有,則不帶的會被忽略。
resultOrdered
resultSets 僅對多結果集使用,將列出語句執行后返回的結果集並給每個結果集一個名稱,名稱用逗號分隔。
2.insert、3.update、4.delete
特有屬性: useGeneratedKeys 僅對insert和update有用,使MyBatis使用getGeneratedKeys方式獲取由數據內部生成的主鍵,默認為false
keyProperty 僅對insert和update有用,唯一標記一個屬性,MyBatis會通過getGeneratedKeys的返回值或者通過insert語句的selectKey子元素設置它的鍵值,默認unset
keyColumn 僅對insert和update有用,通過生成的鍵值設置表中的列名
resultType 結果類型
order 可以設置為BEFORE或AFTER。若設置為BEFORE,會首先選擇主鍵,設置keyProperty然后執行插入語句。若設置為AFTER,先執行插入語句,然后是selectKey元素
statementType 值為STATEMENT、PREPARED、CALLABLE,分別對應Statement、PreparedStatement、CallableStatement。默認值為PREPARED
5.sql 可被其它語句引用的可重用語句塊
例如:<sql id="userColumns">${alias}.id</sql>語句可以包含到下面語句中:
<select id="selectUsers" resultType="map">
select <include refid="userColumns"><property name="alias" value="t1"/></include>
from some_table t1
</select>
6.cache 給定命名空間的緩存配置
7.cache-ref 其它命名空間緩存配置的引用
1.select
屬性: id 在命名空間內唯一標識
parameterType 將傳入該select語句的參數類型的完全限定名或別名
resultType 該條select語句將要返回的類型的完全限定名或別名
resultMap 外部resultMap的命名引用,不可和resultType同時使用
flushCache 設置為true時,則在任何時候只要語句被調用,都會導致本地緩存和二級緩存都被清空,默認為false。
useCache 設置為true時,將會導致本條語句的結果被二級緩存,默認為true
timeout 驅動程序等待數據庫返回請求結果的秒數,默認值為unset(依賴驅動)
fetchSize 嘗試影響驅動程序每次批量返回的結果行數和這個設置值相等,默認為unset(依賴驅動)
statementType 值為STATEMENT、PREPARED、CALLABLE。默認值為PREPARED
resultSetType 結果集的類型,值為FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE。默認為unset(依賴驅動)
databaseId 如果配置了databaseIdProvider,MyBatis會加載所有不帶databaseId或匹配當期databaseId的語句,若帶或不帶的語句都有,則不帶的會被忽略。
resultOrdered
resultSets 僅對多結果集使用,將列出語句執行后返回的結果集並給每個結果集一個名稱,名稱用逗號分隔。
2.insert、3.update、4.delete
特有屬性: useGeneratedKeys 僅對insert和update有用,使MyBatis使用getGeneratedKeys方式獲取由數據內部生成的主鍵,默認為false
keyProperty 僅對insert和update有用,唯一標記一個屬性,MyBatis會通過getGeneratedKeys的返回值或者通過insert語句的selectKey子元素設置它的鍵值,默認unset
keyColumn 僅對insert和update有用,通過生成的鍵值設置表中的列名
resultType 結果類型
order 可以設置為BEFORE或AFTER。若設置為BEFORE,會首先選擇主鍵,設置keyProperty然后執行插入語句。若設置為AFTER,先執行插入語句,然后是selectKey元素
statementType 值為STATEMENT、PREPARED、CALLABLE,分別對應Statement、PreparedStatement、CallableStatement。默認值為PREPARED
5.sql 可被其它語句引用的可重用語句塊
例如:<sql id="userColumns">${alias}.id</sql>語句可以包含到下面語句中:
<select id="selectUsers" resultType="map">
select <include refid="userColumns"><property name="alias" value="t1"/></include>
from some_table t1
</select>
6.cache 給定命名空間的緩存配置
7.cache-ref 其它命名空間緩存配置的引用
8.resultMap 用來描述如何從數據庫結果集中加載對象