譯注:本章講解的是iBATIS的安裝和配置,原書使用的是Java版本,與.NET版本的安裝、配置過程不盡相同,因此這里直接就.NET版本進行說明。主要參考的是iBATIS官方的DataMapperGuide文檔,本章的配置主要針對DataMapper,DataAccess的配置將出現在第10章。iBATIS的安裝過程快速而簡單。它是一個類庫,而不是應用程序,所以實際上并不需要安裝,但要在應用程序中使用它還是要經過幾個步驟。如果您熟悉C#和ADO.NET,那么可能需要好好閱讀本章為下面的一兩章做好準備。
在上一章中我們詳細討論了iBATIS的哲學觀,以及這個框架的來歷。我們也說過,iBATIS是一個混合式的解決方案(hybrid solution),借鑒了多種操作關系數據庫的方法的理念。那么iBATIS到底是什么呢?這一章就來回答這個問題。 iBATIS是一種data mapper。Martin Fowler在他的《Patterns of Enterprise Application Architecture》一書中是這樣描述Data Mapper的: 一個映射層,在對象和數據庫間傳遞數據,并保持兩者與映射層本身相獨立。. 注:Mapper是在兩個獨立對象間建立通信關系的一種對象。
iBATIS的安裝和配置;在前面的章節中,我們了解了iBATIS的sqlMap.config文件的配置,還給出了一個映射語句文件的示例。現在您應該具備了一定基礎,可以進一步完善我們的數據訪問層了。本章和下一章(執行非查詢語句)將詳細討論在DataMap文件中創建和使用映射語句的相關內容。在本章中,我們將首先瀏覽映射語句的大體內容以及它們的前提知識。然后我們將解釋如何使用映射語句從數據庫中獲取類型化的對象(typedobject),以及如何傳入參數來限制返回的數據(比如添加查詢條件)。
在上一章中我們詳細討論了iBATIS的哲學觀,以及這個框架的來歷。我們也說過,iBATIS是一個混合式的解決方案(hybridsolution),借鑒了多種操作關系數據庫的方法的理念。那么iBATIS到底是什么呢?這一章就來回答這個問題。iBATIS是一種datamapper。MartinFowler在他的《Patterns of Enterprise Application Architecture》一書中是這樣描述DataMapper的:一個映射層,在對象和數據庫間傳遞數據,并保持兩者與映射層本身相獨立。.注:Mapper是在兩個獨立對象間建立通信關系的一種對象。Martin很好地區分了數據映射(DataMapping)和元數據映射(MetadataMapping),后者正是O/RM工具的依據,這種工具將數據庫的表和列映射到應用程序中的類和字段(field),也就是說它將數據庫的元數據映射到類的元數據。
映射參數(MappingParameters)對于大多數SQL語句來說,它們有用是因為我們可以在運行時向其傳入參數。有兩種方式可以將參數(parameter)映射到語句中:內聯(inline)參數和外部(external)參數。使用內聯參數,配置一般較為簡單,iBATIS會根據您的配置進行“揣測”,以獲取其它細節信息。而使用外部參數時,配置一般更為顯式的(具體)——因為您告訴iBATIS它該如何去做。4.3.1外部參數映射參數映射(ParameterMap)定義了一個參數的有序列表,它與查詢語句的占位符相匹配。
本章內容包括iBATISAPI的更多內容插入數據更新和刪除數據使用存儲過程對數據庫執行查詢無疑很重要,但多數程序同時也需要將數據寫入數據庫。在本章中,我們將探究使用iBATIS操作數據庫的幾種方式。本章的內容以第4章介紹的概念為基礎,因此,如果您剛開始接觸iBATiS,還沒讀過第4章,可以先去瀏覽一下,因為這一章中的關于參數映射的絕大部分內容同樣適用于本章的非查詢語句。5.1更新數據的基石?在第4章中,您已經學習了所有的語句類型和基本查詢相關的部分API。這里我們再來看一下執行非查詢語句常用的API,然后回顧一下更新數據庫相關的語句類型。
iBATIS快速上手iBATIS框架非常簡單,它上手起來同樣簡單。有多簡單呢?使用iBATIS只要五分鐘我們就可以創建一個完整的應用程序了——當然這不是大型的ERP(Enterprise Resource Planning)解決方案,也不是大規模的電子商務網站,只是一個簡單的命令行工具,它可以執行iBATISSQLMap中的SQL語句并返回結果到控制臺。
映射參數(MappingParameters)對于大多數SQL語句來說,它們有用是因為我們可以在運行時向其傳入參數。有兩種方式可以將參數(parameter)映射到語句中:內聯(inline)參數和外部(external)參數。使用內聯參數,配置一般較為簡單,iBATIS會根據您的配置進行“揣測”,以獲取其它細節信息。而使用外部參數時,配置一般更為顯式的(具體)——因為您告訴iBATIS它該如何去做。4.3.1外部參數映射參數映射(ParameterMap)定義了一個參數的有序列表,它與查詢語句的占位符相匹配。注意,參數對象的屬性定義可以按任意順序,參數映射會確保每個值得以正確地傳入。
iBATIS In Action:序言和目錄序言在我的軟件開發生涯中,我曾工作于多種不同的環境中。在同一家公司中,人們往往會以不同的方式進行開發。考慮到各種各樣的挑戰——人、工具,它們就是開發人員所處的世界——我們會很快意識到這個世界是如此變化多端。我永遠不能了解下一個咨詢項目會給我帶來何種意外的挑戰,所以總會在工具箱里放上各種不同的工具。在數年時間內,iBATIS不過是一個小代碼塊,它能在我需要手工編寫JDBC代碼時為我節省一些時間。那么iBATIS是如何從我的工具箱中的小工具蛻變為一個Apache項目,被數以千計的人使用的呢?我從未有意把iBATIS作為一個完全的開源項目。代碼就放在那里,但我既沒有出售它,也沒有與任何人共享。
執行非查詢語句(二)本章內容包括iBATIS API的更多內容插入數據更新和刪除數據使用存儲過程5.3更新和刪除數據至此,我們已經學習了如何向數據庫插入數據以及獲取相應記錄的鍵值,再來看看如何更新和刪除數據。Insert方法返回的是object類型的值,而Update和Delete方法則返回int類型的值,該值指示了更新或刪除語句所影響的記錄數。iBATIS框架允許使用單條語句操作一條或多條記錄。這是它與大多數ORM工具不同的地方之一,后者一般只能修改單條記錄。5.3.1并發更新處理iBATIS目前尚未實現的一個功能是鎖定記錄以管理對相同數據的并發修改。
中我們詳細討論了iBATIS的哲學觀,以及這個框架的來歷。我們也說過,iBATIS是一個混合式的解決方案(hybridsolution),借鑒了多種操作關系數據庫的方法的理念。那么iBATIS到底是什么呢?這一章就來回答這個問題。iBATIS是一種datamapper。MartinFowler在他的《Patterns of Enterprise Application Architecture》一書中是這樣描述DataMapper的:一個映射層,在對象和數據庫間傳遞數據,并保持兩者與映射層本身相獨立。.注:Mapper是在兩個獨立對象間建立通信關系的一種對象。Martin很好地區分了數據映射(DataMapping)和元數據映射(MetadataMapping),后者正是O/RM工具的依據,這種工具將數據庫的表和列映射到應用程序中的類和字段(field),也就是說它將數據庫的元數據映射到類的元數據。
本文檔是 iBatis 2 的 API 規范。Ibatis是一個輕量級的ORM框架。相對于Hibernate“一站式”的ORM解決方案而言,ibatis是一個“半自動化”的ORM實現。 同Hibernate大致一樣(Session、Transaction、Connection),ibatis中不叫SessionFactory而是叫SqlMapBuilder。
iBatis的核心就在于映射文件(Data Map XML File)。在映射文件里可以定義包括要執行各種SQL語句,存儲過程,輸入參數映射,返回結果映射,緩存機制,并且能通過幾種相對比較復雜的配置實現對象之間的關聯關系和延遲加載。這也是iBatis區別ORM框架的,具備更靈活性,更高性能的關鍵所在。
相對Hibernate和Apache OJB 等“一站式”ORM解決方案而言,ibatis 是一種“半自動化”的ORM實現。 所謂“半自動”,可能理解上有點生澀。縱觀目前主流的ORM,無論Hibernate 還是Apache OJB,都對數據庫結構提供了較為完整的封裝,提供了從POJO 到數據庫表的全套映射機制。程序員往往只需定義好了POJO 到數據庫表的映射關系,即可通過Hibernate或者OJB 提供的方法完成持久層操作。程序員甚至不需要對SQL 的熟練掌握,Hibernate/OJB 會根據制定的存儲邏輯,自動生成對應的SQL 并調用JDBC 接口加以執行。
iBATIS 技術教程
iBATIS 技術教程
業務分層搬家的例子持久層細化Hibernate映射關系iBATIS映射關系認識。
iBATIS技術教程(2)—第一個感性認識幻想(鄭巖峰)2008-6-2實例步驟1.建立數據庫2.創建工程3.添加lib4.編寫sqlmapconfig.xml5.編寫sqlmap.xml6.編寫代碼與傳統的JDBC進行比較減少了61%的代碼量最簡單的持久化框架架構級性能增強SQL代碼從程序代碼中徹底分離,可重用增強了項目中的分工增強了移植性
簡介iBATIS是ClintonBegin開發,現在由APACHE基金會支持的用于加快JDBC編程的經過泛化的框架,是一個持久化框架。當前支持JAVA、.NET、RUBY三種語言
struts2的配置以struts.xml為主要配置文件,該文件配置了URL和java類之間的對應關系,struts支持多個配置文件并存,所以某個模塊的配置文件可以新建一個struts-模塊名.xml,并在此文件中進行配置。