`
xiaoboss
  • 浏览: 642122 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ibatis动态查询条件

阅读更多

IBatis 动态查询条件

下面这个配置基本上包含了最复杂的功能:分页\搜索\排序\缓存\传值Hash表\返回hash表\动态sql

<statement id="XinxiTable_SelectAll" listClass="ArrayList" resultMap="SimpleXinxi" parameterClass="Hashtable" cacheModel="xinxi-cache" >

    SELECT

    <dynamic prepend="top">

          <isNotEqual prepend="top" property="TopNum" compareValue = "0">

            $TopNum$

          </isNotEqual>

    </dynamic>

      *

      FROM

      (select a.[iXinxiID],a.[sXinxiTitle],a.[iXinxiClassId],b.[sClassName],

      a.[dXinxiDate],a.[dXinxiYxq],a.[iXinxiHits],a.[sXinxiUser],a.[sRedirectUrl],

      ROW_NUMBER() OVER(

      <dynamic prepend="order by">

      <isEqual prepend="order by" property="Sort" compareValue = "0">

        a.iXinxiID desc

      </isEqual>

      <isEqual prepend="order by" property="Sort" compareValue = "1">

        a.iXinxiID asc

      </isEqual>

      <isEqual prepend="order by" property="Sort" compareValue = "2">

        a.iXinxiHits desc

      </isEqual>

      <isEqual prepend="order by" property="Sort" compareValue = "3">

        a.iXinxiHits asc

      </isEqual>

    </dynamic>

      ) as row

      FROM

      [dbo].[XinxiTable] as a,[dbo].[XinxiClass] as b

      <dynamic prepend="where">

        <isParameterPresent>

          <isNotEmpty prepend="and" property="XinxiType" >

            a.[iXinxiState]= $XinxiType$

          </isNotEmpty>

          <isNotEqual prepend="and" property="XinxiClass" compareValue = "0">

            a.[iXinxiClassID]= $XinxiClass$

          </isNotEqual>

          <isEqual prepend="and" property="SearchType" compareValue = "1">

            a.[sXinxiTitle] LIKE '%$Keyword$%'

          </isEqual>

          <isEqual prepend="and" property="SearchType" compareValue = "2">

            (a.[sXinxiTitle] LIKE '%$Keyword$%' or a.[sXinxiContent] LIKE '%$Keyword$%')

          </isEqual>

        </isParameterPresent>

      </dynamic>

      and a.iXinxiClassId=b.iClassId

      )a

      <dynamic prepend="where">

        <isParameterPresent>

          <isEqual prepend="and" property="IsPage" compareValue = "1">

            row between $PageLower$ and $PageUpper$

          </isEqual>

        </isParameterPresent>

      </dynamic>

    </statement>

ibatis动态查询条件:

<select id="SelectEemployee" parameterClass="string" resultMap = "employee-result">

    select * from employee

//动态SQL语句

            <dynamic prepend="WHERE">

               <isParameterPresent>

                     emp_id = #value#

               </isParameterPresent>

             </dynamic>

       </select>

    </statements>

</sqlMap>     

/*动态SQL的写法:

开始 <dynamic

条件成立时前面要加的字符串 prepend ="字符串">

<属性关键字  (见下表)

prepend="字符串"

判断条件的对象属性名 property="字符串"

如果是属性关键字是比较条件时,字符串存放要比较的值compareValue="字符串">

要显示的条件名

</属性关键字>

结束</dynamic>

*/

/*动态SQL的参数有

属性关键字

含义

<isEqual>

如果参数相等于值则查询条件有效。

<isNotEqual>

如果参数不等于值则查询条件有效。

<isGreaterThan>

如果参数大于值则查询条件有效。

<isGreaterEqual>

如果参数等于值则查询条件有效。

<isLessEqual>

如果参数小于值则查询条件有效。如下所示:

<isLessEqual prepend = ”AND” property = ”age” compareValue = ”18” >

ADOLESCENT = ‘TRUE’

</isLessEqual>

<isPropertyAvailable>

如果参数有使用则查询条件有效。

<isNotPropertyAvailable>

如果参数没有使用则查询条件有效。

<isNull>

如果参数为NULL则查询条件有效。

<isNotNull>

如果参数不为NULL则查询条件有效。

<isEmpty>

如果参数为空则查询条件有效。

<isNotEmpty>

如果参数不为空则查询条件有效。参数的数据类型为Collection、String 时参数不为NULL或“”。如下所示:

<isNotEmpty prepend=”AND” property=”firstName” >

    FIRST_NAME=#firstName#

</isNotEmpty>

<isParameterPresent>

如果参数类不为NULL则查询条件有效。

<isNotParameterPresent>

Checks to see if the parameter object is not present (null). Example Usage:

<isNotParameterPresent prepend=”AND”>

    EMPLOYEE_TYPE = ‘DEFAULT’

</isNotParameterPresent>

分享到:
评论

相关推荐

    ibatis_动态查询条件

    ibatis_动态查询条件详解及需要注意的地方

    ibatis动态多条件组合查询

    ibatis动态多条件组合查询 实例 说明

    iBatis SQL Maps开发指南.pdf

    开发指南 iBATIS SQL Maps Page 3 of 62 Map类型的Result 复杂类型属性(即自定义类型的属性) 避免N+1 Select(1:1) 延迟加载 VS 联合查询(1:1) 复杂类型集合的属性 避免N+1 Select(1:M和M:N) 组合键值或多...

    iBATIS实战

    书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。书的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的...

    IBatis官方资料

    使用动态查询是iBatis一个非常强大的功能。有时你已经改变WHERE子句条件的基础上你的参数对象的状态。在这种情况下的iBATIS提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的动态SQL标签。

    iBATIS 帮助文档

    SQL Maps (com.ibatis.sqlmap.*)......................................................................................................5 SQL Map的概念........................................................

    基于Servlet3.0+IBatis+BootStrip技术构建简单会议管理系统

    第25课 查询设备信息(根据会议室条件查询) 第26课 添加会议室 第27课 会议管理(查询+修改) 第28课 会议室管理(修改+删除) 第29课 会议室查询(查看)+ajax验证会议室编号 第30课 会议室预约(1) 第31课 会议室...

    springmybatis

    mybatis实战教程mybatis in action之八mybatis 动态sql语句 mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:...

    AppFramework_V1.0

    &lt;br&gt;4、 提供了强大的QueryFilter类构造查询条件,使得实现数据查询不再需要编写复杂的SQL语句; &lt;br&gt;5、 提供类似IBatisNet的Sql模板功能,为复杂的查询统计提供较直观的开发模式; &lt;br&gt;6、 提供代码生成...

    AppFramework_V1.0_New

    &lt;br&gt;4、 提供了强大的QueryFilter类构造查询条件,使得实现数据查询不再需要编写复杂的SQL语句; &lt;br&gt;5、 提供类似IBatisNet的Sql模板功能,为复杂的查询统计提供较直观的开发模式; &lt;br&gt;6、 提供代码生成...

    AppFramework数据库访问组件_代码生成插件_V1.1.rar

    &lt;br&gt;4、 提供了强大的QueryFilter类构造查询条件,使得实现数据查询不再需要编写复杂的SQL语句; &lt;br&gt;5、 提供类似IBatisNet的Sql模板功能,为复杂的查询统计提供较直观的开发模式; &lt;br&gt;6、 提供代码生成...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    若查询条件中不包含索引的最左列,则无法使用索引。 B .对于范围查询,只能利用索引的最左列。 C .对于order by A或group by A语句,在A上建立索引,可以避免排序。 D .对于多列排序,需要所有所有列排序方向...

    Spring面试题

    ☆ Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。 ☆ Spring Web 模块:...

    Java面试宝典2010版

    14. JSP中动态INCLUDE与静态INCLUDE的区别? 15、两种跳转方式分别是什么?有什么区别? 16、页面间对象传递的方法 17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 18、MVC的各个部分都有那些技术...

    最新Java面试宝典pdf版

    14. JSP中动态INCLUDE与静态INCLUDE的区别? 89 15、两种跳转方式分别是什么?有什么区别? 89 16、页面间对象传递的方法 89 17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有...

    Java面试笔试资料大全

    14. JSP中动态INCLUDE与静态INCLUDE的区别? 89 15、两种跳转方式分别是什么?有什么区别? 89 16、页面间对象传递的方法 89 17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有...

    JAVA面试宝典2010

    14. JSP中动态INCLUDE与静态INCLUDE的区别? 89 15、两种跳转方式分别是什么?有什么区别? 89 16、页面间对象传递的方法 89 17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有...

    Java面试宝典-经典

    14. JSP中动态INCLUDE与静态INCLUDE的区别? 89 15、两种跳转方式分别是什么?有什么区别? 89 16、页面间对象传递的方法 89 17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有...

    java面试题大全(2012版)

    14. JSP中动态INCLUDE与静态INCLUDE的区别? 89 15、两种跳转方式分别是什么?有什么区别? 89 16、页面间对象传递的方法 89 17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有...

Global site tag (gtag.js) - Google Analytics