zoukankan      html  css  js  c++  java
  • 跟初学者学习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

     

  • 相关阅读:
    Linux 的文件软链接如何删除
    mysql-xtrabackup备份sh: xtrabackup_56: command not found与error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory
    How To Upgrade ASMLib Kernel Driver as Part of Kernel Upgrade? (文档 ID 1391807.1)
    [trouble] error connecting to master 'repl@192.168.1.107:3306'
    Troubleshooting 10g and 11.1 Clusterware Reboots (文档 ID 265769.1)
    "Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs
    RMAN-06900 RMAN-06901 ORA-19921
    一则ORACLE进程都在但是无法进入实例的问题
    VirtualBox下Win7下CPU高占用的一次故障解决
    netcore之mysql中文乱码问题解决记录
  • 原文地址:https://www.cnblogs.com/woaixiaozhi/p/3224073.html
Copyright © 2011-2022 走看看