相對Hibernate等ORM實現而言,ibatis的映射配置更為簡潔直接,下面是一個典型的配置文件。
可以看到,映射文件主要分為兩個部分:模塊配置和Statement配置insert into user values(#id#,#name#,#age#) update user set name = #name# where id = #id#
一、模塊配置包括:
typeAlias節點:
定義了本映射文件中的別名,以避免過長變量值的反復書寫,此例中通過typeAlias節點為類"com.itmyhome.User"定義了一個別
名"user",這樣在本配置文件的其他部分,需要引用"com.itmyhome.User"類時,只需以其別名替代即可。
cacheModel節點
定義了本映射文件中使用的Cache機制
這裡聲明了一個名為"userCache"的cacheModel,之後可以在Statement聲明中對其進行引用這表明對通過id為"getUser"的Select statement獲取的數據,使用cacheModel"userCache"進行緩存。
之後如果程序再次用此Statement進行數據查詢,即直接從緩存中讀取查詢結果,而無需再去數據庫查詢。
cacheModel主要有下面幾個配置點:
flushInterval:設定緩存有效期,如果超過此設定值,則將此CacheModel的緩存清空。
size:本CacheModel中最大容納的數據對象數量。
flushOnExecute:指定執行特定Statement時,將緩存清空。如updateUser操將更
新數據庫中的用戶信息,這將導致緩存中的數據對象與數據庫中的實際
數據發生偏差,因此必須將緩存清空以避免髒數據的出現。
二、Statement配置
Statement配置包含了數個與SQL Statement相關的節點,分別為:
1)statement
2)insert
3)delete
4)update
5)select
6)procedure
其中,statement最為通用,它可以替代其余的所有節點。除statement之外的節點各自對應了SQL中的
同名操作(procedure對應存儲過程).使用statement定義所有操作固然可以達成目標,但缺乏直觀性,
建議在實際開發中根據操作目的,各自選用對應的節點名加以申明.一方面,使得配置文件
更加直觀,另一方面,也可借助DTD對節點申明進行更有針對性的檢查,以避免配置上的失誤。
主要的配置項如下:
參數描述parameterClass參數類.指定了參數的完整類名(包括包路徑).select * from user where id = #id# insert into user values(#id#,#name#,#age#) update user set name = #name# where id = #id# delete user where id = #id#
這樣在SQL中可以直接將POJO的屬性作為參數加以設定,如:
這裡將com.itmyhome.User類設定為updateUser的參數之後,我們即可在SQL中通過#name#alter table user set name = #name# where id = #id#
對POJO的屬性進行引用。如下:
set name = #name# where id = #id#運行期,ibatis將通過調用User對象的getName,getId方法獲得相應的參數值,並將其作為SQL的參數。
如果parameterClass中設定的是jdk的中的簡單對象類型,如String、Integer,ibatis會直接將其作為SQL中的參數值。
我們也可以將包含了參數數據的Map對象傳遞給Statement如:
這裡傳入的參數就是一個Map對象,ibatis將以key "id"、"name"從中提取對應的參數值update user set name = #name# where id = #id# Mapmap = new HashMap (); map.put("id", "1"); map.put("name", "hello"); sqlMap.update("updateUser",map);
update user set name = #name:VARCHAR# where id = #id:NUMBERIC#