成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iBATIS.NET API基礎淺析

開發 后端
iBATIS.NET API基礎的掌握一直是開發人員首要掌握的東西,那么本文就將是你一個iBATIS.NET API基礎的入口。

有了對iBATIS.NET配置系統的一些認識后,現在就先來簡單了解一下,iBATIS.NET是通過什么的方式去調用映射文件的SQL語句的。這對我們接下來深入了解有很大的幫助。

對于簡單的iBatis應用場合來說,我想大部分都是集中在與SqlMapper對象打交道。這個類應該說是一個工具類,因為我們一般都是直接調用這個類的方法去執行QUID操作,但是它卻不是真正的去做這些事情。因為iBatis內部有很多的類,對象之間的關系是非常復雜的,如果讓客戶直接去使用它內部方法,無疑增加了使用的復雜性,同樣也會產生很多的冗余代碼。因此這里它使用外觀設計模式,通過SqlMapper類封裝了iBatis執行數據庫訪問的復雜操作,包括打開一個會話(Session),獲取返回IMappedStatement對象實例,執行數據庫訪問,關閉連接等相關操作。這樣我們在使用iBatis API的時候就可以非常簡單調用的一個方法,就可以做所有的事情了。比如查詢接口public IList QueryForList(string statementName, object parameterObject),它的內部實現代碼是這樣的。

  1. IList list1;  
  2.       bool flag1 = false;  
  3.       IDalSession session1 = this._sessionHolder.LocalSession;  
  4.       if (session1 == null)  
  5.       {  
  6.             session1 = new SqlMapSession(this.DataSource);  
  7.             session1.OpenConnection();  
  8.             flag1 = true;  
  9.       }  
  10.       IMappedStatement statement1 = this.GetMappedStatement(statementName);  
  11.       try 
  12.       {  
  13.             list1 = statement1.ExecuteQueryForList(session1, parameterObject);  
  14.       }  
  15.       catch 
  16.       {  
  17.             throw;  
  18.       }  
  19.       finally 
  20.       {  
  21.             if (flag1)  
  22.             {  
  23.                   session1.CloseConnection();  
  24.             }  
  25.       }  
  26.       return list1; 

那這些代碼如果直接在客戶代碼中去實現,可想而知工作量會有多大。并且還法保證正確性。

以上簡單看了一個SqlMapper的作用,那該怎樣實例化這個對象呢?實例化它也是一個非常簡單的事情。在iBATIS.NET中,SqlMapper對象默認是一個單件模式的實現。通過Mapper類的靜態Instance屬性來實例化一個SqlMapper對象。這樣的設計可能有一部分是出于性能方面的考慮。因為在初始化SqlMapper對象,需要初始iBatis運行環境配置,讀取和初步解析包含的各個映射文件,所以在在系統運行時第一次調用iBATIS.NET API的時候,可能會需要比較長來處理這個配置。Mapper.Instance屬性的實現如下:

  1. public static SqlMapper Instance()  
  2. {  
  3.       if (Mapper._mapper == null)  
  4.       {  
  5.             lock (typeof(SqlMapper))  
  6.             {  
  7.                   if (Mapper._mapper == null)  
  8.                   {  
  9.                         Mapper.InitMapper();  
  10.                   }  
  11.             }  
  12.       }  
  13.       return Mapper._mapper;  

所以在使用API的時候可以像下面的這么簡單:

  1. Mapper.Instance().Insert("ContentObject_DefaultInsert", p_dataObject); 

當然,如果愿意而且有必要的話,也完全可以由自己來實例化這個對象,我們可以直接使用DomSqlMapBuilder,它為我們提供這樣的擴展能力,通過它的多種實例方法都可以返回出SqlMapper對象:Build,Configure,ConfigureAndWatch。在需要用到多個數據庫或是多種不同數據庫類型的場合下,這種方法是非常有用的。

注意:在使用一個接口時,使用的statementName要在對應類型的statement類型。比如在使用Insert接口時,如果你指定的是一個select類型配置語句的話,那將會拋出異常。因為每一種statement類型都對應一種類型,比如如select 類型的配置語句對應的是SelectMappedStatement類,它是從MappedStatement繼承下來,而它的ExcuteInsert方法是這樣實現的

  1. public override object ExecuteInsert(IDalSession session, object parameterObject)  
  2. {  
  3.       throw new DataMapperException("Update statements cannot be executed as a query insert.");  

這樣就保證了每一種語句類型的職責明確。

iBATIS.NET API基礎就向你介紹到這里,希望對你了解iBATIS.NET API基礎有所幫助。

【編輯推薦】

  1. iBATIS.NET處理多參數的SQL語句的配置
  2. iBATIS.NET與VS 2005進行單元測試淺析
  3. iBATIS.NET執行存儲過程實例詳解
  4. iBATIS一對多映射解析
  5. iBATIS的多對多映射配置淺析
責任編輯:仲衡 來源: cnblogs
相關推薦

2009-07-20 13:22:47

iBATIS.Net日

2009-07-20 10:06:07

iBATIS.net查詢方式

2009-07-20 14:56:18

iBATIS.NET動態選擇DAO

2009-07-21 13:50:00

iBATIS.NET調

2009-07-21 15:21:59

iBATIS.NET多

2009-07-20 09:51:19

iBATIS.net數據庫緩存

2009-07-20 13:47:08

iBATIS.NET字

2009-07-20 15:14:44

iBATIS.NET連

2009-07-21 16:30:15

iBATIS.NET與單元測試

2009-07-16 13:50:31

ibatisResultMap

2009-07-22 14:28:52

iBATIS.NET配

2009-07-21 17:06:35

iBATIS.NET執

2009-07-22 10:03:11

iBATIS Resu

2009-07-22 14:11:09

配置ibatis.neiBatis.net配

2009-07-22 15:21:00

iBATIS SQLM

2009-07-20 15:27:22

Castle.DynaiBATIS.NET

2009-07-21 14:15:00

iBATIS.NET多

2009-07-17 17:57:20

NPetShop iBATIS.Net

2011-03-15 13:30:27

IBatis.netMySQL

2009-07-20 09:27:42

IBATIS.netDAO
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.jizzjizz | 天天爽夜夜爽精品视频婷婷 | 国内精品久久久久 | 羞羞的视频免费看 | 亚洲乱码国产乱码精品精98午夜 | 国产黄色大片 | 久久久久久久电影 | 免费看黄色小视频 | 成人妇女免费播放久久久 | 久久精品免费看 | 欧洲亚洲精品久久久久 | 日韩av一区二区在线观看 | 插插插干干干 | 日韩在线视频观看 | 日韩电影中文字幕 | 国产精品国产成人国产三级 | 黄色一级电影免费观看 | 久久精品这里精品 | 久久国产精品精品国产色婷婷 | 国产一区在线免费观看视频 | 日本色婷婷 | 国产在线视频99 | 国产欧美一区二区三区日本久久久 | 日韩精品一区二区三区中文字幕 | 91麻豆久久久 | 亚洲一区二区三区免费视频 | 日韩av一区在线观看 | 国产精品成人在线观看 | 久草新在线 | aaa综合国产 | 国产精品乱码一区二区三区 | 久久久视 | 国产乱码精品一区二区三区五月婷 | 成人在线不卡 | 中文福利视频 | 久久99精品久久久久久 | 在线看av网址 | 久草视频在线播放 | 日韩中文在线视频 | 一区二区视频在线 | 精品国产精品三级精品av网址 |