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

ibatis源碼分析

發布時間: 2022-05-17 10:18:06

① ibatis 在maven沒有

ibatis是一個資料庫相關的中間件,主要實現的功能是javabean到資料庫表欄位的映射,使用xml管理sql語句,避免手動拼寫sql的情況出現。 maven是一個java工程模塊化管理的工具,主要實現源碼工程的模塊化管理,同時可以管理項目中jar包的依賴關系...

② ibatis 批量update操作

上面的解析成sql就是
update Question?? set status = "OK"?? where questionId in(1,2,3,4,5...)
PS:只是單獨的ibatis項目,不和spring集成??問題補充:<div class="quote_title"rensanning 寫道</div<div class="quote_div"ibatis只是對JDBC的封裝,真正是否能夠一次性批量操作,要看你的資料庫類型! /比如: / 一次插入多條數據: /INSERT INTO t (t.a, t.b, t.c) /VALUES ('key1','key2','value'), ('key1','key3','value2') ,... / /</div / / /這些明白,少量數據可以用循環來執行,如果是大量數據,在ibatis中是怎麼優化的,放到同一個session中嗎???問題補充:<div class="quote_title"makemyownlife 寫道</div<div class="quote_div"iBatis2通過SqlMapClient提供了一組方法用於批處理實現: /startBatch() 開始批處理 /xecuteBatch() 執行批處理 / /<pre name="code" class="java"
public void create(List<Reply> replyList) {try {// 開始批處理
sqlMapClient.startBatch();
for (Reply reply: replyList) {
// 插入操作
sqlMapClient.insert("Reply.create", reply);}// 執行批處理
sqlMapClient.executeBatch();
e.printStackTrace();}}</pre</div / / /首先不加這兩個,紅色部分也可以正常執行批量插入,差別就是加了startBatch() && sqlMapClient.executeBatch(),這樣的好處能說下嗎?問題補充:<div class="quote_title"makemyownlife 寫道</div<div class="quote_div"iBatis2通過SqlMapClient提供了一組方法用於批處理實現: /startBatch() 開始批處理 /xecuteBatch() 執行批處理 / / / public void create(List<Reply> replyList) { / / try { / // 開始批處理 / sqlMapClient.startBatch(); / / <span style="color: red"for (Reply reply: replyList) { / // 插入操作 / sqlMapClient.insert("Reply.create", reply); / }</span / // 執行批處理 / sqlMapClient.executeBatch(); / / } catch (Exception e) { / e.printStackTrace(); / } / } / / /</div / /

③ 如何配置 ibatis 的map.xml 放在src目錄外

新建source folder 而非普通folder,然後和src下一樣
---------------------------------------------------------------------
看了下ibatis源碼,的確,用
Resources.getResourceAsReader (resource)採用的是defaultClassLoader或者Thread.currentThread().getContextClassLoader() , 所以有問題。
但用 getResourceAsStream(null, resource), 或者 getResourceAsFile(null, resource)
會取 ClassLoader.getSystemResourceAsStream, 應該就能用上面的方法了。甚至放到容器、或者jre的環境中

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

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

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

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

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

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

在系統運行過程中,針對不同資料庫類型區分載入不同文件路徑下的sqlmap配置。

留給開發人員做的事依舊是快樂地編寫原始資料庫語句,而不再為多資料庫兼容問題撓頭。

⑥ ibatis框架如何解決大量並發問題

推薦兩篇文章,解決此問題,ssh:
網上通用解決方案:http://www.zyiqibook.com/article245.html
改進後的方案:http://www.zyiqibook.com/201504/article0413155800266.html

⑦ ibatis 源代碼 如何下載

http://code.google.com/p/mybatis/downloads/detail?name=mybatis-3.0.5-bundle.zip&can=3&q=%22mybatis-3%22+-migrations

⑧ 請問:IBATIS它的核心,優點,缺點和用時要注意什麼

IBATIS:最大的優點是可以有效的控制sql發送的數目,提高數據層的執行效率!好象阿里巴巴現在就用的是IBATIS;它需要程序員自己去寫sql語句,不想hibernate那樣是完全面向對象的,自動化的,ibatis是半自動化的,通過表和對象的映射以及手工書寫的sql語句,能夠實現比hibernate等更高的查詢效率。

給個文章你參考下:

1.優點

簡單:
易於學習,易於使用,通過文檔和源代碼,可以比較完全的掌握它的設計思路和實現。

實用:
提供了數據映射功能,提供了對底層數據訪問的封裝(例如ado.net),提供了DAO框架,可以使我們更容易的開發和配置我們的DAL層。靈活:
通過sql基本上可以實現我們不使用數據訪問框架可以實現的所有功能,或許更多。功能完整:
提供了連接管理,緩存支持,線程支持,(分布式)事物管理,通過配置作關系對象映射等數據訪問層需要解決的問題。提供了DAO支持,並在DAO框架中封裝了ADO.NET,NHibernate和DataMapper。增強系統的可維護性:
通過提供DAL層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提高了可維護性。
2.缺點

滯後性:
還沒有明確對.NET2.0的支持。最新版本在2.0下編譯可以,但有些單元測試不能通過。
不成熟,工程實踐較少:
IbatisNet在實際項目中的使用較少。 只是理論上可行.
半ORM,工具支持較少:
需要我們自己寫sql,並且.NET下還未發現可以自動生成業務層類和配置文件的工具,這點和NHibernate不一樣,NHibernate會為我們的資料庫直接產生sql,並有一些輔助工具。因此使用Ibatis比NHibernate要多做一些工作。
3.可行性

沒有最好的框架,只有最適合的框架。 存在的便是合理的,它存在就說明有它存在的道理。但它未必為我們存在。所以選擇一個框架最主要的是看它對你有沒有意義,意義有多大,是不是比其他框架帶給你的好處要多。沒有絕對的優點也沒有絕對的缺點,重要的是看在什麼情況下討論。 上面說了部分的Ibatis的優點和部分缺點。這些優點從理論上證明Ibatis對任何數據持久層都合適,但未必是最好的選擇。下面對上面的優缺點分別從兩方面討論。簡單: 我們都喜歡簡單,簡單意味著學習成本低,使用中出錯的可能性低。同時,簡單的東西一般來說功能不夠強大。反過來,復雜的東西學習成本高,用起來不方便,並且團隊沒有很強的技術實力,一般不要使用。實用:
解決了項目中需要解決的問題,這是任何實際工程中採用的框架和工具都應具有的性質,否則就不要拿到實際項目中來。靈活: 靈活有兩層意思,一種是簡單易擴展,另一種是功能強大提供了很多選項。Ibatis屬於前者,Hibernate屬於後者。兩者各有優缺點。功能完整: Ibatis的功能完整也是相對的,比我們自己開發的框架應該完整,但對比其他框架肯定也有一些解決不了的問題。增強系統的可維護性: 利用Ibatis可以做到sql和代碼分離,可以設計出一個清晰的數據訪問層(DAL)。但項目架構是否科學合理,是否以維護,關鍵不在Ibatis,因為它只是一個數據層框架。但是我們也不得不清楚,要想發揮Ibatis的優勢,我們需要做一些額外工作,比如最好設計DAO介面,需要將業務層實體和對實體的訪問放在不同的工程中,同時需要維護xml配置文件。滯後性: Ibatis組現在還沒有提到要支持.NET2.0,很多人在.NET2.0下使用Ibatis都出現了問題。所以如果要使用.NET2.0開發,IBatis不是一個好選擇,還需要等待。不成熟: 開源的東西很難說成熟,但一般比我們自己寫的框架要成熟。由於我們可以拿到他的源代碼,所以關鍵在於我們能否駕馭它。半ORM,工具支持少: 這註定了Ibatis不能從本質上提升開發效率,我們需要自己寫sql,寫實體類,寫配置文件。但這也是它優越的地方,它沒有為我們做的他多,所以我們就有更多的施展空間。而且它非常適合那些並不能完全控制資料庫的系統和需要利用資料庫本身提供的高級特性的統計查詢系統的開發。
使用Ibatis需要自己寫sql,由於我們的sql不可能完全符合sql標准,比起NHibernate產生的sql來,可移植性差。不過由於我們更改資料庫的可能性較小,對我們來說sql符合標准以便可以在遷移到不同伺服器時代價最小並不是十分必要的。另一方面,NHibernate雖然可以屏蔽很多資料庫間的不同,但是卻很難利用某些資料庫的高級特性,比如Oracle的分析統計函數。
NHibernate不適合資料庫模式不規范,約束不完整,需要大量復雜查詢的系統,同時NHibernate的學習成本較高,完全掌握NHibernate也較困難,風險較大。 自己寫框架未必比Ibatis的好,穩定,強大和可擴展。而且自己開發框架也需要較大的工作量。 如果使用DotNet並且要選一個數據層框架,而系統中有相當一部分較復雜的sql,或資料庫設計不合理,臟數據多,對性能和資源要求嚴格,Ibatis是一個比較不錯的選擇。他的那些缺點並不是致命的,而且也是有一些解決方案的。尤其是,當選用了Ibatis的DataAccess作為DAO框架時,我們可以同時使用NHibernate,ADO.NET和DataMapper(IbatisNet的核心組件),那樣將會使風險降到最低,並且整個系統的框架比較合理。
另外,利用Ibatis可以統一編碼風格,節約開發成本,大家不會再把精力浪費到分頁 連接池 主鍵生成等地方了,可以集中精力進行業務組件的編寫。

綜上:
很多時候我們要在是自己開發框架和選用第三方框架和選用什麼樣的框架問題上進行綜合考慮。考慮的標准當然是項目的當前情況和我們希望達到目的的一個平衡。

Ibatis只是封裝了數據訪問層,替我們做了部分的對象關系映射。但我們的代價是必須要寫xml配置文件,相對於Hibernate我們還要寫很多sql。Hibernate通過工具直接從資料庫模式生成實體類和基本的配置文件,而且大部分情況下不需要我們寫sql,會較大的提升開發效率。但這些也有很多的局限性,尤其是對環境的要求較高(資料庫設計,對象設計,團隊的協作等)。 個人感覺Ibatis對項目比較有意義的地方在於它小巧靈活,可擴展,封裝了數據訪問層(事務,緩存,異常,日誌),並提供了DAO框架支持。
利用Ibatis我們可以做到代碼和sql的分離,只要sql能夠解決的問題,Ibatis就能幫我們較容易的解決,同時也使我們的項目對某一框架的依賴性變小(因為Ibatis是非侵入性的)。這將極大的降低項目風險,減少解決復雜問題的時間,使項目的維護變得簡單。
Ibatis對於應用的修改,調試,擴充和維護將會變得容易自然。修改時,我們主要修改的是代表模型的實體對象,xml配置文件中的sql,和/或配置文件的ResultMap(很多時候是不需要的)。同時,sql和代碼分離,我們不用在代碼的StringBuffer的append方法之間尋找需要修改的sql。配置文件中的sql便利了我們的調試和對sql的評審及以後的sql重用。
利用一些框架在前期一般會拖慢開發效率。因為我們需要付出學習成本,很多時候,使用框架需要寫很多配置文件,在使用不熟時開發速度較慢;同時利用框架往往使系統代碼量增大,比如Model1和Model2模型,開發效率應該還是Model1快,四層的架構肯定比兩層的代碼量大。 但對於中後期開發和維護將會極大的提高效率。
利用一些較完全的開發框架和代碼生成工具,在前期會較大的提高開發效率,但在後期常常會拖慢進度,並有可能成為以後維護的夢魘。比如torque生成實體類和其對應的sql,雖大幅提高了效率,但修改負擔較大。
比較理想的開發方式是使用簡單框架結合簡單的代碼生成工具。框架提供系統的基礎服務,並規范開發。框架一方面提供了開發中某一方面的開發基礎支持,比如數據訪問層,事務,日誌,公用類,異常等。另一方面,也為開發定義了模式,定義了系統的基本輪廓。同時,通過簡單的代碼生成工具生成部分低級的代碼。比如通過工具從資料庫模式生成實體類。這些類生成後我們可以自由修改。

Hibernate是十分強大,比較完善的ORM框架,不過這是它的優點也是它的缺點。 j2ee系統是否採用Hibernate3,是一個需要認真評估的問題。
要想Hibernate工作的好,資料庫的設計必須好。同時對於復雜的數據操作同時需要使用sql,Hibernate3對於直接使用sql的支持比Hibernate2要自然,這一點是可以接受的。
Hibernate比較復雜,功能強大而靈活,要用好Hibernate確實不是很簡單,當然Spring框架提供了對Hibernate的封裝,使Hibernate的使用變得簡單了點。 可以說Ibatis在任何系統里都適用,但未必是最好選擇。不過Ibatis提供的思路是我們應該仔細考慮的

⑨ ibatis 是什麼

iBATIS一詞來源於「internet」和「abatis」的組合,是一個由Clinton Begin在2001年發起的開放源代碼項目。最初側重於密碼軟體的開發,現在是一個基於Java的持久層框架。

⑩ 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的升級版本。

熱點內容
java的基本結構 發布:2024-10-11 15:12:24 瀏覽:730
大眾suv哪個內部配置好 發布:2024-10-11 14:30:39 瀏覽:93
緩存到資料庫失敗 發布:2024-10-11 14:27:44 瀏覽:678
我的世界手機國際怎麼創建伺服器 發布:2024-10-11 13:45:46 瀏覽:420
svnlinux命令 發布:2024-10-11 13:35:54 瀏覽:234
ig加密語音 發布:2024-10-11 12:19:25 瀏覽:487
釘圖上傳 發布:2024-10-11 12:11:27 瀏覽:479
腳本個 發布:2024-10-11 12:10:43 瀏覽:151
剛性攻絲的編程 發布:2024-10-11 12:10:39 瀏覽:469
怎麼登錄安卓版全民tv 發布:2024-10-11 12:10:33 瀏覽:624