天天看點

Ibatis的配置和使用 - 曦曦

Ibatis的配置和使用

一.ibatis配置及使用

1.編寫PO層,persistant object 持久對象,用作資料存儲的持久化對象,一般要實作與資料庫表的映射,友善進行與資料庫的互動。 在這裡,其實就是一些普通Java類。

Ibatis的配置和使用 - 曦曦

其中,Employee.java的代碼如下:就是類得屬性及其get和set方法

Ibatis的配置和使用 - 曦曦

其他的類都按照和上面同樣的方式寫成。

2.編寫dao接口層,資料通路對象(Data Access Object DAO),将與資料庫的互動封裝到DAO的方法之中,這樣,通路資料庫就隻需要操作一個對象的方法就可以完成,對上層屏蔽了實體資料庫的連接配接和互動,實作了将低級别的資料通路邏輯與進階别的業務邏輯分離。

Ibatis的配置和使用 - 曦曦

IEmployeeDAO的代碼如下:這裡面,是一些方法接口,具體的業務邏輯要用到怎麼樣的資料操作,這裡就包含相應的方法接口,具體實作,則留在con.test.dao.impl包中進行,進而達到封裝函數具體實作,隻給上層應用流出相應接口的效果。

Ibatis的配置和使用 - 曦曦

3.編寫DAO的實作層,該層是對DAO層接口的具體實作

Ibatis的配置和使用 - 曦曦

EmployeeDAO.java實作了IEmployeeDAO.java接口,具體代碼為

Ibatis的配置和使用 - 曦曦

這裡就包含了對IEmployeeDAO的實作,對其中方法的實作,其中用到了ibatis架構中的sqlClient類,這個類中封裝了大多數的資料庫操作函數包括delete,insert等等,比如說像delete方法,其中又2個參數,第一個就是使用者要執行該操作用到的資料庫查詢語句,這裡是"deleteEmployee",這是在com.test.sqlmap中的Employee.xml中進行定義的,之後會對這個檔案進行進一步說明,這裡隻要清楚你要執行删除操作,那你就要寫相應的SQL語句,而deleteEmployee就是那個SQL語句的id,你通過這個id就可以調用到那個删除SQL語句了;第二個參數是執行該SQL語句所需要的參數,因為我們是按員工編号進行員工删除,是以這裡就要從前台把員工編号傳過來,這樣sqlClient這個ibatis架構自己定義的接口就會為我們執行相應的删除操作了。

其中sqlClient中有很多資料操作函數,這在其API文檔中可以查到:

Ibatis的配置和使用 - 曦曦

4.編寫java類與資料庫映射的sqlmap包,這裡面是一些XML檔案,裡面是在DAO實作層中用到的資料庫操作的SQL語句定義。

Ibatis的配置和使用 - 曦曦

Employee.xml的代碼如下:

Ibatis的配置和使用 - 曦曦

我們還以delete操作為例:

Ibatis的配置和使用 - 曦曦

前面在EmployeeDAO.java用到的deleteEmployee就是在這裡定義,這裡定義了這個SQL語句的id為deleEmployee,這樣在其他地方就能通過id調用此SQL語句,parameterClass表示的執行此SQL語句需要傳入的參數類型,因為我們在前面已經制定,通過員工編号進行删除,是以此處的參數類型就是員工編号類型,這在資料庫中定義為varchar,是以在這裡就是String類型。中間這句SQL語句是純SQL語句,這也就是ibatis和hibernate的最大不同,ibatis需要自己編寫SQL語句進行資料庫操作,而hibernate是通過架構已經定義好的方法或者是HQL語言進行資料庫操作,這是一種靈活性的展現,畢竟,你自己寫的SQL語句雖然費時費力,但是自己可以根據具體應用邏輯編寫SQL,更加靈活。

5.編寫sqlMapConfig.xml檔案,這個檔案是ibatis必須的配置檔案,裡面包含了所有領域對象的映射檔案,也就是資料庫表對應的xml檔案,我們在com.test.sqlmap中寫的xml檔案都要在這個配置檔案中進行标明,其中指明了xml檔案的具體路徑。

Ibatis的配置和使用 - 曦曦

這個很簡單,我就不再多說了。

6.編寫service接口檔案

Ibatis的配置和使用 - 曦曦

這裡和DAO接口一樣,都是一些方法接口

Ibatis的配置和使用 - 曦曦

7.編寫service實作檔案

Ibatis的配置和使用 - 曦曦

這裡是對service接口檔案的實作

Ibatis的配置和使用 - 曦曦

這樣編寫好service檔案,就可以在action中進行使用。

8總結:其實上訴文檔所做的,就是把業務邏輯層需要的資料庫操作進行封裝,就是把SQL語句轉換成類方法,而類方法又要先實作其接口,這樣一層層的進行封裝,實作松耦合,降低各層之間的依賴,這樣有利于以後項目的維護,性能的添加。而我們實作了業務邏輯層所需要的方法,為業務邏輯層留出相應接口,這樣,編寫業務邏輯層的人隻需直接調用我們提供的方法即可,他可能根本不知道底層具體操作,也不必知道具體操作,他隻要知道需要什麼,而所需要的我們又實作了這個方法,他直接拿去用即可,這樣分工明确,在大型項目開發中是非常有利的。