IBatis框架的SQL Map配置檔案

2021-08-29 06:56:02 字數 2179 閱讀 9365

ibatis

的 sql map

框架中,需要乙個配置檔案來宣告一些基本資訊。該檔案類似

hibernate

框架的配置檔案「

hibernate.cfg.xml

」,sql map

初始化期間,會自動在

classpath

中尋找這個檔案,並讀取其中的配置資訊。

配置檔案的名稱並不重要,可以由程式設計師來指定,這裡假設該配置檔案名為sql_map_config.xml。在配置檔案中通常會配置如下這些持久層框架資訊:

q資料庫連線jdbc。

qsql map對映檔案的載入。

qsql map的配置和優化設定。

下面看乙個sql_map_config.xml示例12.1:

例12.1:sql_map_config.xml

<?xml version="1.0" encoding="utf-8"?>

"">

enhancementenabled="true"

lazyloadingenabled="true"

maxrequests="32"

maxsessions="10"

maxtransactions="5"

usestatementnamespaces="true" />

value="jdbc:postgresql:"/>

在這個配置檔案中,明確表示了sql map框架的配置引數,以作為根結點是必不可少的。隨後使用了元素、元素和元素。

在元素中提供了多個屬性來配置和優化sql map執行時的例項:

qmaxrequests屬性指定了同時執行sql語句最大執行數。

qmaxsessions屬性指定了同一時間內活動的最大session數。所謂session就是乙個請求或乙個sql map執行時例項自動獲得的會話。

qmaxtransactions屬性指定了最大事務處理的執行緒數。

qcachemodelsenabled屬性指定了sql map執行時例項的快取model是否開啟。

qlazyloadingenabled屬性指定了持久化資料是否延遲載入。

qenhancementenabled屬性指定了全域性性的啟用或禁用位元組碼增強,以優化訪問pojo變數屬性的功能。

qusestatementnamespaces屬性指定了在sql map對映檔案中是否用全限定名來引用對映宣告。

元素用來配置事務管理。元素的屬性type指定了所使用的事務管理器的型別。該屬性值可以是乙個別名,也可以是乙個類名,本例中所使用的jdbc就是乙個別名,它是由ibatis框架所提供。包含在ibatis框架中的事務管理器有三個:除了本例所使用的jdbc(用來管理事務)外,還提供了jta和external兩個事務管理器。其中jta將提供全域性的事務管理,external則可以讓程式設計師自行管理事務。

元素的子元素為jdbc資料來源設定了一系列引數,這些引數將被用於連線資料庫。在sql map架構中提供了三種jdbc連線的方式,可以利用type屬性來設定這三種方式:

q******datasourcefactory是ibatis框架提供的基本連線池的實現,當容器沒有提供資料來源時可以選擇它。******datasourcefactory的別名已經由ibatis框架所定義,名為「******」。本例就是使用******datasourcefactory作為連線池。

qdbcpdatasourcefactory是ibatis框架使用dbcp連線池所提供的服務。在web容器中經常會使用它,在第三章的完整示例中曾經使用它來配置struts框架部分dao的jdbc連線池。dbcpdatasourcefactory的別名已經由ibatis框架所定義,名為「dbcp」。

qjndidatasourcefactory是ibatis框架提供的對jndi命名服務的支援,它可以在容器中利用jndi從上下文中找到連線池的實現。在介紹ejb的配置以及hibernate框架時,曾經將它作為在jboss伺服器中取得連線池的實現,在ibatis框架中是一樣的道理。jndidatasourcefactory的別名已經由ibatis框架所定義,名為「jndi」。

本例中最後乙個元素是元素,利用屬性resource來指定sql map對映檔案的路徑定義。sql map對映檔案可以從classpath中得到,所以這個路徑的定義是以classpath為根目錄開始的。本例中沒有定義其他路徑,說明sql map對映檔案將被直接放置在classpath路徑下。sql map對映檔案可以有多個。

關於iBATIS的sqlmap的幾點說明

1.對於資料庫設計date型別,如果我們要要求返回帶時間的格式時間 yyyy mm dd hh mm ss 那麼我們的 中 jdbctype 必須為 datetime 否則將返回 yyyy mm dd 格式 2.對於輸入引數 我們可以指定 nullvalue 當資料庫沒有值時,可以使用的預設值,但是...

iBatis配置檔案中sqlmap異常

今天配置ibatis時遇到乙個異常 document root element sqlmap must match doctype root sqlmapconfig 最後找到問題原因是 pojo.xml配置檔案的檔案頭寫錯了。如果直接把sqlmapconfig.xml的檔案頭複製到pojo.xml...

iBatis框架的執行原理。

本文分析ibatis框架的主要類是如何串聯起來 如何工作的。下圖描述了整個過程中的主要執行步驟。在上圖中描述的sqlmapsession物件的建立和釋放根據不同的情況會有所不同,因為sqlmapsession負責建立資料庫的連線,包括對事務的管理,ibatis既可以自己管理事務又可以由外部管理,ib...