這一章我們主要介紹一下IbatisNet里面的動態sql語句的運用,比如有時候我們想進行模糊查詢,參數是動態加入的。或者要實現top n ,order by ,分頁等功能的時候,我們就不得不用動態拼接sql語句。
好了,下面我們就用一個小例子來說明一下如何使用IbatisNet的動態sql。
首先看下面的配置文件,然后我再講解這些配置節點的含義。

1 <?xml version="1.0" encoding="utf-8" ?> 2 <sqlMap namespace="Classes" xmlns="http://ibatis.apache.org/mapping" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > 4 <!--配置你的實體類的別名,一般的都是一個實體類對應一個xml--> 5 <alias> 6 <typeAlias alias="classes" type="Model.Calsses,Model" /> 7 </alias> 8 9 <!--找到你的實體類與數據庫字段的對應關系,如果數據庫字段與實體類一樣 這個可以省略不要--> 10 11 <resultMaps> 12 <resultMap id="SelectAllResult" class="classes"> 13 <result property="Id" column="calsses_id" /> 14 <result property="Name" column="classes_name" /> 15 <result property="Description" column="classes_description" /> 16 </resultMap> 17 </resultMaps> 18 <!--切記這里不能再起別名,比如 calsses_id as Id等,這樣它會報異常。因為在這里它會根據上面自動對應(只限返回值為SelectAllResult)--> 19 <statements> 20 <select id="SelectAllClasses" resultMap="SelectAllResult" parameterClass="classes"> 21 select calsses_id, 22 classes_name, 23 classes_description 24 from calsses WHERE 1=1 25 <dynamic prepend="and"> 26 <isParameterPresent> 27 classes_name like '%$Name$%' 28 </isParameterPresent> 29 </dynamic> 30 <dynamic prepend="and"> 31 <isParameterPresent> 32 classes_description like '%$Description$%' 33 </isParameterPresent> 34 </dynamic> 35 order by calsses_id desc 36 </select> 37 <delete id="DeleteClassByname" parameterClass="string"> 38 delete calsses 39 where calsses_id=100 40 <dynamic prepend="or"> 41 <isNotNull> 42 classes_name=#Name# 43 </isNotNull> 44 </dynamic> 45 </delete> 46 </statements> 47 </sqlMap>
<dynamic>節點是條件的開始節點,你可以在里面配置的條件,prepend屬性表示你要用的連接符比如:and,or等…………property屬性表示你的參數。
完整的結構如下:
<dynamic prepend ="字符串(and or等)">
<關鍵字 property="判斷條件的對象屬性名" compareValue="如果是屬性關鍵字是比較條件時,字符串存放要比較的值">
要顯示的條件名
</關鍵字>
</dynamic>
下面主要列表一下常用的關鍵字:
關鍵字 含義
<isEqual> 參數等於值
<isNotEqual> 參數不等於值
<isGreaterThan> 參數大於值
<isGreaterEqual> 參數大於等於值
<isLessEqual> 參數小於等於值
<isPropertyAvailable> 參數被使用
<isNotPropertyAvailable> 參數沒有使用
<isNull> 參數 is null
<isNotNull> 參數 is not null
<isEmpty> 參數為空
<isNotEmpty> 參數不為空
<isParameterPresent> 參數類不為NULL
<isNotParameterPresent> 參數類為NULL
好了 ,這一章就介紹到這兒,關於動態sql比較簡單,多練習一下估計就差不多了(如果想更深入的理解可以自己查看一下框架的源碼)。下一章我們將介紹一下Ibatisnet如何返回DataTable,DataSet。
源碼下載地址:http://download.csdn.net/detail/woaixiaozhi/5835671