隐藏

IbatisNet第三篇

发布:2014/9/26 14:49:08作者:管理员 来源:本站 浏览次数:1149

 

     这一章我们主要介绍一下IbatisNet里面的动态sql语句的运用,比如有时候我们想进行模糊查询,参数是动态加入的。或者要实现top n ,order by ,分页等功能的时候,我们就不得不用动态拼接sql语句。

    好了,下面我们就用一个小例子来说明一下如何使用IbatisNet的动态sql

    首先看下面的配置文件,然后我再讲解这些配置节点的含义。

<?xml version="1.0" encoding="utf-8" ?>

<sqlMap namespace="Classes" xmlns="http://ibatis.apache.org/mapping"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >

<!--配置你的实体类的别名,一般的都是一个实体类对应一个xml-->

  <alias>

    <typeAlias alias="classes" type="Model.Calsses,Model" />

  </alias>

 

  <!--找到你的实体类与数据库字段的对应关系,如果数据库字段与实体类一样 这个可以省略不要-->

 

  <resultMaps>

    <resultMap id="SelectAllResult" class="classes">

      <result property="Id" column="calsses_id" />

      <result property="Name" column="classes_name" />

      <result property="Description" column="classes_description" />

    </resultMap>

  </resultMaps>

  <!--切记这里不能再起别名,比如 calsses_id as Id等,这样它会报异常。因为在这里它会根据上面自动对应(只限返回值为SelectAllResult-->

  <statements>

    <select id="SelectAllClasses" resultMap="SelectAllResult" parameterClass="classes">

      select calsses_id,

      classes_name,

      classes_description

      from calsses WHERE 1=1

      <dynamic prepend="and">

        <isParameterPresent>

          classes_name like   '%$Name$%'

        </isParameterPresent>

      </dynamic>

      <dynamic prepend="and">

        <isParameterPresent>

          classes_description like  '%$Description$%'

        </isParameterPresent>

      </dynamic>

      order by calsses_id desc

    </select>

    <delete id="DeleteClassByname" parameterClass="string">

      delete calsses

      where calsses_id=100

      <dynamic prepend="or">

        <isNotNull>

          classes_name=#Name#

        </isNotNull>

      </dynamic>

    </delete>

  </statements>

</sqlMap>

 

xml配置

<dynamic>节点是条件的开始节点,你可以在里面配置的条件,prepend属性表示你要用的连接符比如:andor等…………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