国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

iBATIS.net常用的查詢方式淺析

開發(fā) 后端
iBATIS.net常用的查詢方式有哪些呢?本文就向你介紹iBATIS.net常用的查詢方式相關(guān)的信息。

在項(xiàng)目開發(fā)過程中,查詢占了很大的一個(gè)比重,一個(gè)框架的好壞也很多程度上取決于查詢的靈活性和效率。

在IBatis.Net中提供了方便的數(shù)據(jù)庫查詢方式。

在Dao代碼部分主要有兩種方式:

1、查詢結(jié)果為一個(gè)對(duì)象:

  1. ISqlMapper sqlMap = sqlMapDaoSession.SqlMap;  
  2.  
  3.  return (Account) sqlMap.QueryForObject("GetAccountViaColumnName", accountID); 

2、查詢結(jié)果為一個(gè)列表:

  1. ISqlMapper sqlMap = sqlMapDaoSession.SqlMap;  
  2.  
  3. return (ArrayList)sqlMap.QueryForList("GetAccountAsHashtableResultClass", 1); 

這兩種方法同時(shí)都提供了面向泛型的重載方法。這兩個(gè)方法的第一個(gè)參數(shù)對(duì)應(yīng)配置文件中的select id,第二個(gè)參數(shù)表示傳入查詢的條件

配置文件的寫法:

在IBatis.Net中提供了多種查詢配置的寫法,我這里列出幾種比較常用的方式:

1、獲得一張表的所有數(shù)據(jù)

  1. select id="GetAllAccountsAsHashMapViaResultMap" 
  2.                 resultMap="account-hashtable-result"﹥  
  3.     select *  
  4.     from Accounts  
  5.     order by Account_ID  
  6. ﹤/select﹥ 

這是最簡(jiǎn)單的方式,其中resultMap是返回查詢結(jié)果的形式,需要另外配置:

  1. ﹤resultMap id="account-hashtable-result" class="Hashtable"﹥  
  2.     ﹤result property="Id"           column="Account_ID"/﹥  
  3.     ﹤result property="FirstName"    column="Account_FirstName"/﹥  
  4.     ﹤result property="LastName"     column="Account_LastName"/﹥  
  5.     ﹤result property="EmailAddress" column="Account_Email"/﹥  
  6. ﹤/resultMap﹥ 

表示:得到的結(jié)果的每一條記錄都映射成一個(gè)Hashtable,這個(gè)Hashtable中包含四個(gè)Key(Id,F(xiàn)irstName......)

2、根據(jù)條件查詢(簡(jiǎn)單方式):

  1. select id="GetAccountViaColumnIndex" 
  2.         parameterClass="int" 
  3.         resultMap="indexed-account-result"﹥  
  4.     select 
  5.     Account_ID,  
  6.     Account_FirstName,  
  7.     Account_LastName,  
  8.     Account_Email  
  9.     from Accounts  
  10.     where Account_ID = #value#  
  11. ﹤/select﹥ 

只有一個(gè)條件,傳入?yún)?shù)的類型是int型,拼寫sql時(shí)直接用 #value#就可以了

3、根據(jù)條件查詢(較復(fù)雜方式):

  1. select id="GetAccountsDynamic" resultMap="account-result" parameterClass="Hashtable" ﹥  
  2.     select top $MaximumAllowed$ * from Accounts  
  3.     ﹤dynamic prepend="where"﹥  
  4.             ﹤isParameterPresent﹥  
  5.             ﹤isNotEmpty prepend="and" property="FirstName" ﹥  
  6.                     Account_FirstName LIKE '%$FirstName$%' 
  7.             ﹤/isNotEmpty﹥  
  8.             ﹤isNotEmpty prepend="and" property="LastName" ﹥  
  9.                     Account_LastName LIKE '%$LastName$%' 
  10.             ﹤/isNotEmpty﹥  
  11.             ﹤isNotEmpty prepend="and" property="EmailAddress"  ﹥  
  12.                     Account_Email LIKE '%$EmailAddress$%' 
  13.             ﹤/isNotEmpty﹥  
  14.             ﹤/isParameterPresent﹥  
  15.         ﹤/dynamic﹥  
  16.         order by Account_LastName  
  17. ﹤/select﹥ 

傳入?yún)?shù)是一個(gè)Hashtable,MaximumAllowed等表示的是Hashtable里的key值,用$$包含起來。

并且查詢時(shí)可以根據(jù)條件是否為空動(dòng)態(tài)拼寫sql語句

PS:輸入?yún)?shù)同樣可以使用Account類,注意對(duì)應(yīng)的鍵要和類中的屬性名一致(大小寫也要一樣)

4、多表查詢

多表查詢時(shí)返回參數(shù)有三種方式,一種是新建一個(gè)類,在這個(gè)類中包含這多個(gè)表的所有屬性,還有一種就是直接返回Hastable就可以了:

  1.   ﹤select id="GetAccountAsHashtableResultClass" 
  2. sultClass="HashMap"﹥  
  3.       select 
  4.       a.*,b.*  
  5.       from a,b  
  6.       where a.Account_ID = b.Account_ID          
  7. ﹤/select﹥ 

PS:這里的HashMap實(shí)際上就是Hashtable

第三種方式是使用IBatis中的復(fù)雜屬性(感謝Anders Cui 的提醒)

比如現(xiàn)在有兩張表Account和Degree,使用Account_ID關(guān)聯(lián),那么需要在原有的基礎(chǔ)上修改:

1、修改Account實(shí)體類,加入一個(gè)屬性:

  1. private Degree _degree;  
  2. public Degree Degree  
  3. {  
  4.     get  
  5.     {  
  6.         return _degree;  
  7.     }  
  8.     set  
  9.     {  
  10.         _degree = value;  
  11.     }  

這樣是一個(gè)1:1的關(guān)系,也可以加入IList DegreeList的屬性,這樣查詢的結(jié)果就是一個(gè)1:n的關(guān)系

2、修改配置文件:

在resultMaps節(jié)加入:

  1. ﹤resultMap id="comresult"  class="Account" ﹥  
  2.   ﹤result property="Id"           column="Account_ID"/﹥  
  3.   ﹤result property="FirstName"    column="Account_FirstName"/﹥  
  4.   ﹤result property="LastName"     column="Account_LastName"/﹥  
  5.   ﹤result property="EmailAddress" column="Account_Email" nullValue="no_email@provided.com"/﹥  
  6.   ﹤result property="Degree" column="Account_ID=Account_ID"  select="degreeretrive" /﹥  
  7. ﹤/resultMap﹥ 

對(duì)于Degree屬性,還可以加入lazyLoad=true 延遲加載,優(yōu)化性能(也就是開始時(shí)并沒有實(shí)際查詢數(shù)據(jù)庫,當(dāng)用到屬性Degree時(shí),才實(shí)際的查詢相應(yīng)的數(shù)據(jù))

在statements節(jié)加入:

  1. ﹤statement id="degreeretrive" 
  2.   parameterClass="Hashtable" 
  3.   resultClass="Degree"﹥  
  4.   select *  
  5.   from Degree  
  6.   where Account_id = #Account_ID#  
  7. ﹤/statement﹥  
  8.  
  9. select id="GetComTables" 
  10.   resultMap="comresult"﹥  
  11.   select *  
  12.   from Accounts  
  13.   order by Account_ID  
  14. ﹤/select﹥ 

這樣可以正確的查詢出結(jié)果,符合OO,但是也有兩個(gè)小問題:

1、比較麻煩,不夠靈活

2、性能受影響:

這種方式其實(shí)和Hibernet比較類似了,查詢時(shí)首先執(zhí)行

  1. select *        from Accounts        order by Account_ID 

然后根據(jù)這條語句的結(jié)果,比如有100條記錄,那就要執(zhí)行100次以下的語句:

  1. select *        from Degree        where Account_id =  @param0 

關(guān)于輸入輸出:

從上面可以看到輸入時(shí)可以使用:parameterClass和parameterMap,輸出時(shí)可以使用:resultClass和resultMap

對(duì)于resultMap和parameterMap我們需要另外進(jìn)行配置(如上所示)

對(duì)于parameterClass和resultClass,如果是C#固有類型可以直接使用,如果是我們自定義類可以在SqlMap.config中先統(tǒng)一聲明一下:

  1. ﹤alias﹥  
  2.     ﹤typeAlias alias="Account" type="GSpring.Domain.Account"/﹥  
  3. ﹤/alias﹥ 

iBATIS.net常用的查詢方式就向你介紹到這里,希望通過介紹能夠使你了解到iBATIS.net常用的查詢方式。

【編輯推薦】

  1. Spring iBATIS整合實(shí)例演示
  2. iBATIS Spring Struts2整合實(shí)例淺析
  3. iBATIS.net應(yīng)用之下載、編譯、運(yùn)行NPetShop
  4. IBATIS.net中兩大常用的DAO淺談
  5. iBATIS.net數(shù)據(jù)庫緩存模式淺析
責(zé)任編輯:仲衡 來源: cnblogs
相關(guān)推薦

2009-07-22 09:07:01

iBATIS.NET

2009-07-20 13:22:47

iBATIS.Net日

2009-07-20 14:56:18

iBATIS.NET動(dòng)態(tài)選擇DAO

2009-07-21 13:50:00

iBATIS.NET調(diào)

2009-07-21 15:21:59

iBATIS.NET多

2009-07-20 09:51:19

iBATIS.net數(shù)據(jù)庫緩存

2009-07-20 13:47:08

iBATIS.NET字

2009-07-20 15:14:44

iBATIS.NET連

2009-07-21 14:15:00

iBATIS.NET多

2009-07-21 16:30:15

iBATIS.NET與單元測(cè)試

2009-07-16 13:50:31

ibatisResultMap

2009-07-20 09:27:42

IBATIS.netDAO

2009-07-21 17:06:35

iBATIS.NET執(zhí)

2009-07-22 14:28:52

iBATIS.NET配

2009-07-20 15:27:22

Castle.DynaiBATIS.NET

2009-07-22 14:11:09

配置ibatis.neiBatis.net配

2009-07-21 16:17:28

iBATIS.NET

2009-07-22 13:04:41

iBATIS動(dòng)態(tài)查詢

2011-03-15 13:30:27

IBatis.netMySQL

2009-07-17 17:57:20

NPetShop iBATIS.Net
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文av在线全新| 一区二区三区视频国产日韩| 亚洲影院色在线观看免费| www.欧美免费| 中文字幕精品网| 日韩中文在线视频| 日韩精品中文字幕在线播放| 日韩欧美另类在线| 亚洲乱码一区二区| 久久久精品一区二区| 欧洲亚洲免费在线| 国产精品电影观看| 91九色对白| 国产伦精品一区二区| 蜜桃91精品入口| 亚洲啊啊啊啊啊| 国产综合免费视频| 日本xxxxxx| 天堂成人在线| 天堂中文在线播放| 国产精品3区| 红桃成人av在线播放| 久久久久久久久丰满| 亚洲一区二区三区高清| 黄色成人91| 日韩激情视频在线观看| 美美哒免费高清在线观看视频一区二区 | 国产精品专区在线| 亚洲综合欧美日韩| 免费看日本毛片| 羞羞网www| 免费黄色在线视频网站| 国产福利在线免费观看| 欧美韩国日本| 日韩一区二区三区精品视频第3页| 国产成人影院| 日本女优在线视频一区二区| av在线不卡网| 欧美一区二区性放荡片| 欧美日本精品在线| 91沈先生作品| 久久香蕉视频网站| 国产视频第一页在线观看| 狠狠躁少妇一区二区三区| 国产精品香蕉| 91蜜桃传媒精品久久久一区二区| 色综合久久久久网| 久久久国产一区二区| 精品国产乱码久久久久久郑州公司 | 最近中文字幕一区二区| 18网站在线观看| 日韩福利视频一区| 免费看欧美女人艹b| 亚洲欧美日韩国产手机在线| 中文字幕国内精品| 欧美中日韩一区二区三区| 国产一级大片| 欧美久久久网站| 蜜桃久久久久久| 欧美中文字幕一区二区三区| 人人爽久久涩噜噜噜网站| 成年人观看网站| av观看在线| 欧美91大片| 国产日韩欧美亚洲| 亚洲午夜未删减在线观看| 99九九电视剧免费观看| xx免费视频| 国产精品国产| 91色视频在线| 在线观看欧美日韩国产| 日本一区视频在线| 老司机在线看片网av| 亚洲一区色图| 色婷婷综合视频在线观看| 国产精品v欧美精品∨日韩| 草久在线视频| 精品国产1区| 国产精品色哟哟网站| 欧美成人激情在线| 精品成在人线av无码免费看| 免费看电影在线| 激情六月婷婷综合| 精品在线欧美视频| 欧洲精品视频在线| 四虎影视4hu4虎成人| 国产成人av影院| 一道本无吗dⅴd在线播放一区 | 高清不卡一区二区三区| 狠狠色伊人亚洲综合网站l | 国产午夜一区| 欧美日韩精品在线| 国产精品久久久久久久久久久久冷| 国产黄在线看| 麻豆精品网站| 亚洲精品一区二区三区不| 亚洲国产精品成人天堂| 少妇精品视频在线观看| 久久一区二区三区四区| 亚洲最新在线视频| 羞羞网站免费观看| 久久精品1区| 欧美床上激情在线观看| 男人资源在线播放| 91麻豆免费观看| 99re在线视频上| 日本综合字幕| 欧美日韩免费网站| 又粗又黑又大的吊av| 欧美第一精品| 一级做a爰片久久毛片美女图片| 中文字幕在线视频观看| 国产成人欧美日韩在线电影| 欧美黄色免费影院| 成年在线观看视频| 男女男精品视频| 国产免费一区二区三区视频| 91亚洲男人天堂| 青青青青在线视频| 国产精品成人a在线观看| 欧美www视频| 欧美高清视频| 亚洲五码中文字幕| 亚洲国产精品女人| 亚洲午夜电影| 久久久久久九九九| 激情成人综合| 成人免费毛片在线观看| 国产日韩欧美| 日韩黄色影视| 高清视频一区二区| 国产精品视频在线观看| 欧美国产另类| 国产亚洲一区二区三区在线播放| 天堂中文av在线资源库| 精品久久久久久亚洲精品| 国产精品人人妻人人爽人人牛| 视频一区二区欧美| 欧美中文在线免费| 北岛玲heyzo一区二区| 欧美日韩美女在线| 国产超碰在线播放| 久久国产精品第一页| 国产噜噜噜噜噜久久久久久久久 | 久久精品99久久久| 国产女主播一区二区三区| 免费福利视频一区| 中文字幕久久久| av在线加勒比| 亚洲欧洲日产国码av系列天堂| 国产不卡在线| 在线观看中文字幕不卡| 日本在线www| 亚洲精品v天堂中文字幕| av在线播放网| 欧美性猛交xxxx乱大交| eeuss影院在线播放| 欧美成人在线直播| 午夜黄色在线观看| 亚洲综合免费观看高清完整版 | 亚洲女人初尝黑人巨大| 羞羞视频在线观看免费| 91麻豆精品国产91久久久使用方法| 在线看黄的网站| 五月天精品一区二区三区| 欧美黑人孕妇孕交| 一区二区三区在线观看网站| 亚洲最大综合网| 亚洲国产毛片aaaaa无费看| 成年人视频在线| 亚洲少妇30p| 三级理论午夜在线观看| 亚洲激情网站免费观看| 免费理论片在线观看播放老| 欧美日韩日本视频| 污污视频在线看| 一区二区亚洲欧洲国产日韩| 四虎影视国产精品| 久久久久久亚洲| 精品99在线| 在线观看成人av| 国产色综合一区| 伊人75在线| 精品久久久网站| 超碰在线cao| 日韩av快播网址| 亚洲日本国产| www.亚洲成人网| 亚洲午夜av在线| 欧美wwww| 97视频免费看| 国产在线精品一区在线观看麻豆| 91好吊色国产欧美日韩在线| 国产精品人妖ts系列视频| 欧美边添边摸边做边爱免费| 日韩精品免费观看| 亚洲va久久| 亚洲一区二区三区精品视频| 成人欧美一区二区三区视频网页| 国产黄a三级三级三级av在线看|