當前位置:首頁 » 操作系統 » ibatis源碼

ibatis源碼

發布時間: 2024-10-24 06:22:53

㈠ mybatis和ibatis的區別

1、基本信息不同

mybatis:MyBatis 是一款優秀的持久層框架,它支持定製化 sql存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。

MyBatis 可以使用簡單的 XML 或註解來配置和映射原生信息,將介面和 java 的 POJOs(Plain Ordinary Java Object,普通的 Java對象)映射成資料庫中的記錄。

ibatis:iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO),同時還提供一個利用這個框架開發的JPetStore實例。相對Hibernate和ApacheOJB等「一站式」ORM解決方案而言,ibatis 是一種「半自動化」的ORM實現。

iBATIS 目前提供了三種語言實現的版本,包括:Java、.NET以及Ruby。

2、開發時間不同

mybatis:MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。

ibatis:iBATIS一詞來源於「internet」和「abatis」的組合,是一個由Clinton Begin在2001年發起的開放源代碼項目。

3、配置方法不同

mybatis簡化了編碼的過程,不需要去寫的實現類,直接寫一個的介面,再寫一個xml配置文件,整個mybatis就配置好了,也就是資料庫就連接好了,然後在service裡面直接調用就可以了,但是ibatis則不可以,必須要寫的實現類。mybatis是ibatis的升級版本。

㈡ spring 怎麼管理ibatis的session,spring事務管理後 會關閉session么在源碼中怎麼查看

首先要明白spring為什麼要管理session?session是在什麼時候使用的?以及為什麼要管理?

1、spring其實管理的是sessionFactory對象,很明顯這個對象是用來獲取session的。在spring上下文全局中應該只有一個,這個不用擔心因為默認情況下spring都是管理bean都是單例的。

2、session是線程不安全的,因此我們使用的是時候應當使用局部變數的方式使用。也就是方法體內使用
3、先看圖

可能你覺得這個比較發麻,這么簡單的一個方法我手動控制就好了!但是實際應用當中可能你這個業務方法還調用其他的業務方法,那時候你這個事務要怎麼控制,是全部寫在一個try-catch裡面還是怎麼處理?

㈢ mybatis怎麼實現兩種資料庫的兼容

方法:在系統運行過程中,針對不同資料庫類型區分載入不同文件路徑下的sqlmap配置。留給開發人員做的事依舊是快樂地編寫原始資料庫語句,而不再為多資料庫兼容問題撓頭。
分析問題:
1、解決ibatis多資料庫兼容的問題,實際上就是讓ibatis可以自動選擇不同資料庫sqlmap配置文件。
2、打開ibatis源碼工程並進行代碼跟蹤,最終定位到com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.java處,系統中運行的sqlmap節點均從這里統一轉化載入的。
3、很明顯SqlMapConfigParser源碼中的addSqlMapNodelets負責解析「/sqlMapConfig/sqlMap」路徑,即也就是sqlmap文件路徑。
4、要實現「多資料庫兼容」,這里改造下這個方法即可。

解決方法:
1、首選我們在<setting>節點新增一個「DBProctName」用於判斷資料庫種類。當然通過java.sql.DatabaseMetaData也可以獲得,但這太依賴於jdbc驅動,還是手動配置保險。
2、重構SqlMapConfigParser的addSqlMapNodelets方法。
" 1)首選獲得單個sqlmap文件的位置,如 sqlmap主目錄\XXX.xml;
2)依據上面設置的DBProctName屬性值獲得資料庫類型;
3)將sqlmap的文件路徑重定位到運行資料庫類型文件下。如 sqlmap主目錄\mysql\XXX.xml,代表程序當前運行於msql資料庫上,並載入系統mysql資料庫對應的 sqlmap文件"
4、ok,現在ibatis支持「多資料庫兼容」了(完整源碼見附件)。

使用方法:
1、編譯SqlMapConfigParser.java生成可運行文件SqlMapConfigParser.class(見附件),並將其覆蓋添加到ibatis.jar中。
2、在系統sqlmap配置文件存放主目錄如src\conf\mapping添加多資料庫兼容支持的子目錄,如src\conf\mapping\mysql,src\conf\mapping\oracle等
3、以實際項目需要編寫多資料庫sqlmap配置文件。注意:不同資料庫類型需要確保具有相同的sqlmap配置文件名和sql節點名
4、在ibatis主配置文件(如sql-map-config.xml)中,<setting>指定當前程序運行資料庫類型

熱點內容
apk反編譯源碼在哪 發布:2024-10-24 08:29:29 瀏覽:328
棧的演算法 發布:2024-10-24 08:25:14 瀏覽:443
openacc編譯 發布:2024-10-24 08:07:48 瀏覽:27
商店傳奇安卓什麼時候出 發布:2024-10-24 08:06:54 瀏覽:482
fragment緩存 發布:2024-10-24 08:00:14 瀏覽:145
安卓微信黑名單怎麼刪不了 發布:2024-10-24 07:59:22 瀏覽:775
android不顯示界面 發布:2024-10-24 07:56:59 瀏覽:987
python的效率 發布:2024-10-24 07:56:59 瀏覽:223
怎麼准確加入方舟伺服器 發布:2024-10-24 07:56:24 瀏覽:829
全景展示源碼 發布:2024-10-24 07:52:04 瀏覽:343