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

iBATIS ParameterMap配置實例淺析

開發 后端
iBATIS ParameterMap是能夠優化訪問數據庫操作而存在的,那么本文就向你介紹iBATIS ParameterMap的基本情況。

iBATIS ParameterMap就是針對在用ADO.NET進行數據庫訪問操作中,最麻煩的就是準備DbCommand必須為它添加DbParameter,特別是當要傳的參數特別多的情況下,數據訪問層的很多代碼都是花在那里的問題所提出的一種解決方案,基于XML的配置,把字段名和對象的屬性對應起來,通過運行時的一些工作,自動為DbCommand提供它所需的參數集合。從而避免了我們直接寫很多重復代碼。

在Employees_ParameterMap.xml配置文件中:

  1. select id="Employees_SelectWithParameterClass" parameterClass="Employee" resultClass="Employee" listClass="ArrayList"﹥  
  2.  
  3.     SELECT EmployeeID,LastName,FirstName FROM Employees WHERE EmployeeID = #EmployeeID# OR LastName = #LastName#  
  4.  
  5. ﹤/select﹥ 

使用的是內聯參數映射的方式,語句的在執行查詢時只需為它提供Employee類型的對象,它就會自動去讀自己需要的EmployeeID,LastName屬性的值,返回查詢結果。在執行時它所執行的語句如下:

  1. [SELECT EmployeeID,LastName,FirstName FROM Employees WHERE EmployeeID =  @param0  OR LastName =  @param1] 

所需的參數的提供方式如下:

  1. [@param0=[EmployeeID,12], @param1=[LastName,8bbb7bfb-c]] 

并且,在iBATIS中還會指出各個參數的類型:

  1. [@param0=[Int32, System.Int32], @param1=[String, System.String]] 

對于下面這個配置:

  1. select id="Employees_SelectWithParameterMap1" parameterMap="Employee_SelectParameterMap" resultClass="Employee" listClass="ArrayList"﹥  
  2.  
  3.         SELECT EmployeeID,LastName,FirstName FROM Employees WHERE EmployeeID = #EmployeeID# OR LastName = #LastName# OR Country = #Country#  
  4.  
  5.     ﹤/select﹥ 

它所使用的ParameterMap配置如下:

  1. ﹤parameterMap class="Employee" id="Employee_SelectParameterMap"﹥  
  2.  
  3.     ﹤parameter column="EmployeeID" property="EmployeeID" dbType="int" type="int" direction="Input"/﹥  
  4.  
  5.     ﹤parameter column="LastName" property="LastName" dbType="nvarchar" type="string" direction="Input"/﹥  
  6.  
  7.     ﹤parameter column="Country" property="Country" dbType="nvarchar" type="string" direction="Input"/﹥  
  8.  
  9. ﹤/parameterMap﹥ 

在每一個Parameter映射元素可以指定每個屬性對應的列,它的類型和對應的數據庫的類型,還可以指定當它為空值時的默認值,具體可以參看官方文檔。但是可以看到,我們期待它能和內聯參數一樣的使用方法,如上配置的那樣??墒切胁恍心??從程序的執行結果來看,是不可以的。由于之前在配置SQL語句的時候基本都是使用內聯參數沒有特別注意到這點。在使用Parameter Map的時候是不能用#property#的形式顯示地指定要使用的屬性參數,只能通過“?”,順序替代每一個parameter元素,如下:

  1. select id="Employees_SelectWithParameterMap2" parameterMap="Employee_SelectParameterMap" resultClass="Employee" listClass="ArrayList"﹥  
  2.  
  3.             SELECT EmployeeID,LastName,FirstName FROM Employees WHERE EmployeeID = ? OR LastName = ? OR Country = ?  
  4.  
  5. ﹤/select﹥ 

可以看到,由于沒有明顯地指出EmployeeID對應哪個屬性,那如果把上面的parameter元素調換一下,那么EmployeeID所對應的參數值就發生變化了。同時,也是這個原因,通過這種方式的參數映射,就無法重復利用每個參數了。如果仔細觀察會發現,既然都指定了column屬性了,那它為什么不會自動去配置呢?其實在這邊column屬性是不起作用的,它只會作用在執行存儲過程的時候。也就是說上面的Parameter元素中的column屬性不是必須的。下面是一個存儲過程的例子:

  1. ﹤procedure id="Employee_InsertWithProcedure" parameterMap="Employee_InsertParameterMap2" resultClass="int"﹥  
  2.  
  3.     InsertEmployee  
  4.  
  5. ﹤/procedure﹥ 

InsertEmployee接受兩個參數@LastName和@FirstName。我給它提供的映射參數如下:

  1. ﹤parameterMap class="Employee" id="Employee_InsertParameterMap2"﹥             
  2.  
  3.     ﹤parameter column="LastName" property="LastName" dbType="nvarchar" type="string" direction="Input"/﹥  
  4.  
  5.     ﹤parameter column="FirstName" property="FirstName" dbType="nvarchar" type="string" direction="Input"/﹥  
  6.  
  7. ﹤/parameterMap﹥ 

上面這樣的配置的結果是(其中逗號后面的是值):

  1. [@LastName=[LastName,9a8bc059-3], @FirstName=[FirstName,46887db0-2]] 

但是當我把他們的位置調換了一下。它的結果如下:

  1. [@LastName=[ FirstName,9a8bc059-3], @FirstName=[LastName,46887db0-2]] 

也就是對儲存過程也是一樣的,參數映射關系仍然與parameter元素的順序息息相關的。Column屬性仍然沒有顯示出它的作用。所以使用ParameterMap還有是有一定的局限性的。但是對存儲過程來說,就必須使用這樣的方式,因為它只支持ParameterMap為它提供參數,而不支持內聯參數。

***總結列出幾點ParameterMap需要特別注意的幾個細節:

1.在配置ParameterMap的時候,如果傳入的參數對像是元數據類型(int,string etc),那么在配置Parameter元素的時候,property的屬性名使用value。通過這種情況主要使用在為存儲指定參數的情況下。

2.如果ParameterMap中配置的parameter元素不包含在傳入參數對象中(屬性或IDictionary對象的一個key,value項),將會產生異常,而不管在statement中有沒有用到。

3.在使用parameterMap的extends屬性時,它將會繼承extends值對應的parameterMap配置,并且會繼承它的所有的參數映射,并且順序是從繼承的那配置為基準開始計算。這個在需要用到extends屬性的時候要特別注意。

4.在為存儲過程傳參過程要特別注意,參數映射與存儲過程的參數之間的順序對應要正確。而且必須為提供與存儲過程足夠的參數(parameter配置足夠多),即使存儲過程的部分參數已經有默認值了。否則將拋出System.ArgumentOutOfRangeException異常。

5.正常情況下,應該盡量使用內聯參數。

iBATIS ParameterMap相關的情況就介紹到這里,希望通過這樣的介紹對你掌握iBATIS ParameterMap的設計有點啟發。

【編輯推薦】

  1. iBATIS.NET執行存儲過程實例詳解
  2. iBATIS一對多映射解析
  3. iBATIS的多對多映射配置淺析
  4. iBATIS.NET API基礎淺析
  5. iBATIS映射文件基礎淺談
責任編輯:仲衡 來源: cnblogs
相關推薦

2009-07-21 11:12:00

iBATIS配置

2009-07-22 15:01:01

iBATIS SQLM

2009-07-24 17:20:59

iBatis配置

2009-07-17 16:49:18

iBATIS XML配

2009-07-17 17:45:56

iBATIS Spri

2009-07-22 11:11:39

iBATIS分頁實例ObjectDataS

2009-07-22 11:27:36

iBATIS模糊查詢

2009-07-21 11:17:46

iBATISDAO的配置

2009-07-21 17:39:50

iBATIS的多對多映

2009-07-20 18:00:16

iBATIS DAO事

2009-07-16 09:14:26

iBATIS DAO

2009-07-17 10:32:45

iBATIS MapB

2009-07-15 17:19:31

iBATIS Ecli

2009-07-22 10:03:11

iBATIS Resu

2009-07-22 16:27:24

iBATIS配置類iBATIS操作類

2009-07-22 10:42:59

iBATIS Cach

2009-07-15 17:58:07

iBATIS 動態映射

2009-07-16 10:23:30

iBATIS工作原理

2009-07-17 10:20:24

iBATIS實例

2009-07-20 16:41:27

Struts2.0+i
點贊
收藏

51CTO技術棧公眾號

国产三级一区二区三区| 久久精品国产亚洲5555| 欧美gvvideo网站| 欧美精品电影在线播放| 婷婷五月色综合| 中文字幕区一区二区三| 欧美日韩亚洲一区二区| 欧美日韩视频免费在线观看| 亚洲1区在线| 亚洲一级在线| 亚洲香蕉伊在人在线观| 99国产在线观看| 成人免费av电影| 中文字幕第一页久久| 色女人综合av| 成人av资源网址| 狠狠躁天天躁日日躁欧美| 国产一区二区三区在线免费| 国产日产一区| 久久精品最新地址| 精品成人一区二区三区免费视频| 亚洲国产精品v| 99热这里只有精品7| 亚洲乱码一区| 久久视频这里只有精品| 欧美一级鲁丝片| 亚洲毛片在线观看.| 羞羞视频网站在线免费观看| 91亚洲精品久久久蜜桃| 国产av天堂无码一区二区三区| 久久综合亚州| 美日韩免费视频| 国产精品国码视频| 久久久久久国产精品美女| 四虎国产精品免费久久| 欧美激情一区二区三区在线视频观看 | 最新亚洲视频| 国产私拍一区| 国产91对白在线观看九色| 日本日本精品二区免费| 久久激情视频| 7777在线视频| 亚洲香肠在线观看| www.av在线播放| 亚洲国产精品福利| 99久久婷婷国产综合精品首页| 欧美激情图片区| 欧美aⅴ99久久黑人专区| 色呦呦网站入口| 亚洲最色的网站| 黄色的视频在线免费观看| 国产精品第一页第二页第三页| 欧美亚洲另类在线一区二区三区| 国产三级三级三级看三级| 久久欧美一区二区| jizz日韩| 欧美丰满少妇xxxxx| 国产真实有声精品录音| 最近2019好看的中文字幕免费| 日韩成人在线观看视频| 亚洲专区国产精品| 国产精品亚洲综合一区在线观看| 91亚洲免费视频| 日韩免费高清av| 国产精品久一| dy888夜精品国产专区| 国产片一区二区| 性欧美18xxxhd| 欧美一区免费视频| 亚洲图片欧美视频| 国产不卡精品| 亚洲国产成人不卡| 一区二区三区精品视频在线| 四虎4545www国产精品| 色999五月色| 色婷婷综合久久久久中文一区二区 | 国产精品美女久久久久av超清| 91视频免费观看| 日本三级一区| 久久久久久国产精品免费免费| 久久99精品一区二区三区三区| 最新黄色片网站| 国产精品成人免费电影| 亚洲性视频h| 在线网址91| 国产精品视频公开费视频| 欧美精彩视频一区二区三区| 国产亚洲观看| 国产精品久久a| 热99精品里视频精品| 91麻豆.com| 经典三级久久| 蜜臀av无码一区二区三区| 最近中文字幕2019免费| 亚洲在线国产日韩欧美| 在线电影福利片| 中文字幕一区二区三区在线乱码 | 久久97超碰国产精品超碰| 国产精品久久久久久福利| 免费成人av网站| 国产一区二区久久| 婷婷亚洲天堂| 91久久精品www人人做人人爽| 欧美视频完全免费看| 日韩有码一区二区三区| 99视频这里有精品| 中文字幕免费在线观看| 中文字幕日韩一区二区三区| 乱亲女秽乱长久久久| 色综合久久99| 成人激情午夜影院| 久操成人av| 都市激情久久综合| 国产无限制自拍| 久久久精品一区| 久久日一线二线三线suv| 日韩母乳在线| 免费av在线网站| 国产美女特级嫩嫩嫩bbb片| 精品乱码一区| 91av在线影院| 亚洲偷欧美偷国内偷| 一本色道a无线码一区v| 久久亚洲一区二区三区四区| 国产精品日韩| 欧美xxxx在线| 欧美aaa免费| 免费羞羞视频| 欧美少妇性生活视频| 日本一区视频在线观看免费| 欧美激情区在线播放| 欧美成人a视频| 欧美日韩在线播| 中文字幕一区二区三| 久久久久久久久久久黄色| 免费成人在线影院| 亚洲欧美清纯在线制服| 欧美1级日本1级| 一个色综合网| 2023国产精华国产精品| 亚洲性视频在线| 国产一区二区在线观| 国产免费不卡| 国语自产精品视频在线看抢先版结局 | 99久久精品费精品国产风间由美| 国产劲爆久久| 欧美毛片免费观看| 99久久久国产精品免费调教网站| 人在线成免费视频| 成人性生交大片免费看在线播放| 亚洲成人基地| 国产无遮挡又黄又爽免费软件| 欧美一级片中文字幕| 羞羞小视频视频| 一色桃子在线| 欧美黄色激情| 97se综合| 韩国一区二区三区视频| 3344永久| 日韩人妻精品一区二区三区| 一区视频二区视频| 久久精品免费网站| 一级毛片免费看| 好操啊在线观看免费视频| 久久mv成人精品亚洲动漫| 激情综合网婷婷| 黄色大片在线免费观看| 九色porny丨首页入口在线| 免费成人高清在线视频| 99er精品视频| 国产日韩三级| 日韩一区二区在线免费| 欧美天堂亚洲电影院在线观看| 中文成人在线| 日本一区二区免费高清| 久久精品人人| 亚洲美女屁股眼交| 亚洲午夜未删减在线观看 | 国模大尺度一区二区三区| 国产欧美一区二区精品性色超碰| 亚洲日本电影在线| 亚洲激情小视频| 91久久综合亚洲鲁鲁五月天| 天堂资源在线亚洲视频| 中文字幕在线观| 福利精品一区| 久久99久久久欧美国产| 欧美午夜久久久| 欧美日韩xxxxx| 99热都是精品| 欧洲美女少妇精品| 精品免费在线| 日本不卡的三区四区五区| 亚洲曰韩产成在线| 久久久久久成人精品| 91精品国产毛片武则天| 黄色美女视频在线观看| 国产日韩欧美高清免费| 亚洲一区二区中文在线| 国产精品第8页|