1. 程式人生 > >MyBatis中SQL對映的XML檔案

MyBatis中SQL對映的XML檔案

Mappers

既然MyBatis的行為已經由上篇介紹的MyBatis配置檔案的元素配置完了,我們現在就要定義SQL對映語句了。但是,首先我們需要告訴MyBatis到哪裡去找到這些配置。Java在這方面沒有提供一個很好的方法,所以最佳的方式是告訴MyBatis去哪裡去找對映檔案。你可以使用相對於類路徑的資源引用,或者字元表示,或url應用的完全限定名。

   MyBatis架構中,POJOs物件物件一個對映器介面,對映器介面和對應的SQL對映的XML在同一包下。


SQL對映的XML檔案

MyBatis真證的力量實在對映語句中。這裡是奇蹟發生的地方,對於所有的力量,SQL對映的XML檔案相當簡單。當然你如果將他們和同等功能的JDBC程式碼來比較,你會發現對映檔案節省了大約95%的程式碼量。MyBatis聚焦於SQL。使其原離普通的方式。


下一部分從語句本身開始描述每個元素的細節。

select

查詢語句是使用MyBatis時最常用的元素之一。對於每次插入,修改或刪除那也會有很多的查詢,這也是MyBatis將重心和努力放到查詢和結果對映的原因。對於簡單類別的查詢元素是非常簡單的。比如:


下面是對屬性的描述:id 代表的是方法名,對應的是對映器介面類中的方法名,在名稱空間中唯一的識別符號,可以別用來引用這條語句。parameterType 代表是將會作為查詢條件,傳入預編譯語句的引數類的完全限定名或別名。resultType 表示返回的結果集的型別,具體來說是從這條語句返回的期望型別的類的完全限定名或別名。注意集合情形,那應該是集合可以包含的型別,而不能是集合本身。使用resutType或resultMap,但不能同時使用。

resultMap 表示命名引用外部的resultMap。返回map是MyBatis最具力量的特性,對其有一個很好的理解的話,許多複雜的對映情形就能解決了。使用resultType或resultMap,但不能同時使用。flushCache 控制快取的一個屬性,預設值false。將其設定為true,表示不論語句什麼時候被引用,都會導致快取被清空。

useCache 將其設定為true,將會導致這條語句的結果別快取,預設值:true。timeout表示的是等待資料庫返回請求結果,並丟擲異常時間的最大等待值。fetchSize這是暗示驅動程式每次批量返回的結果行數。預設不處理(驅動自行處理)。statementType 表示STATEMENT,PREPARED或CALLABLE的一種。這會讓MyBatis使用選擇使用Statement,PreparedStatement或CallableStatement。預設值是:PREPARED。

resultSetType 表示FORWARD_ONLY  ,SCROLL_SENSITIVE,SCROLL_INSENSITIVE的一種。預設是不設定。




MyBatis有另外一種方法來處理資料庫不支援自動生成型別,或者可能JDBC驅動不支援自動生成主鍵時的主鍵生成問題。這裡有一個很簡單(甚至很傻)的例項,他可以生成一個隨機的ID(可能你不會這樣做,但是這展示了MyBatis處理問題的靈活性,因為他並不關心ID的生成)