跟初學者學習IbatisNet第三篇


 

     這一章我們主要介紹一下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>
xml配置

<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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM