• 跟初学者学习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

     

  • 相关阅读:
    Maven版本问题导致的 unable to import maven project, see logs for details. 问题
    Java时间的转换
    idea中添加类和方法注释以及codeCheck
    使用Java语言递归删除目录下面产生的临时文件
    Oracle VirtualBox添加虚拟机
    java使用JMail通过QQ邮件服务器实现自动发送邮件
    linux下&、nohup与screen的比较
    InputStream流无法重复读取的解决办法
    使用Java POI来选择提取Word文档中的表格信息
    Java实现压缩文件与解压缩文件
  • 原文地址:https://www.cnblogs.com/woaixiaozhi/p/3224073.html
Copyright © 2020-2023  润新知