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>

转载于:https://www.cnblogs.com/jcgh/archive/2012/06/18/2553628.html

ibatis动态查询条件(转载待完善)相关推荐

  1. ibatis动态查询条件

    ibatis的调试相对困难,出错的时候主要依据是log4生成的log文件和出错提示,这方面要能比较熟练的看懂. 下面这个配置基本上包含了最复杂的功能:分页\搜索\排序\缓存\传值Hash表\返回has ...

  2. 浅析Entity Framework Core2.0的日志记录与动态查询条件

    前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core2.0的日志记录与动态查询条件 去 ...

  3. linq之InnerJoin和LeftJoin以及封装动态查询条件版本

    Linq的出现,使数据集的处理显得愈来愈简便.很多时候对于本地数据集的处理,脑海中的第一反应,即尝试使用Linq来实现.诸如DataTable的innerJoin以及leftJoin等操作,很多时候我 ...

  4. Vue动态查询条件-Vue动态查询规则-Vue多条件分组组合查询-递归组件(一):前端

    先看最终的效果: 最近项目上有一个需求,VUE前端要实现动态查询条件组件,后端就能够动态组装SQL. 要模仿人家Azure Devops的查询功能,我丢,Azure Devops是人家微软开发的个东西 ...

  5. jpa 动态查询条件 数组_Spring data jpa 复杂动态查询方式总结

    一.Spring data jpa 简介 首先JPA是Java持久层API,由Sun公司开发, 希望整合ORM技术,实现天下归一.  诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,目前也是 ...

  6. sql不用拼接语句实现动态查询条件

    DECLARE @oFrom INT SET @oFrom = 2SELECT * FROM baseinfo WHERE 1 = 1 AND ((@oFrom = 0 and Type = 'Ord ...

  7. java中动态查询条件,Java实现动态添加查询条件

    今天遇到一个问题,就是需要根据前端页面发送的条件查询数据库记录,但是前端发送的条件是不确定的.如果使用mybatis的xml方法可以使用if标签灵活的添加判断条件,但是现在我使用的就是单纯的sql. ...

  8. Springboot中对jpa动态查询条件的封装

    jpa对于固定参数的条件查询比较简单,可以在Repository中直接用参数名来查询.但是对于不固定的参数查询就比较麻烦了,官方提供的是继承JpaSpecificationExecutor,然后自己拼 ...

  9. 柏睿数据java_数据库动态查询最佳实现 陈氏查询

    我占个位,命名为陈氏查询!一帮所谓牛人总说不是什么创新,为我的"陈氏查询"名称感到很不爽!但他们所提供的证据范例个人认为连ibatis的做法都不如,反增加了开发的麻烦! 还是开门见 ...

最新文章

  1. Day 1 AR认知课 || AIRX三次方
  2. 机器学习经典论文/survey合集
  3. 在远程桌面在目标主机与客户机复制文件?
  4. obj模型转json模型_微软文字转图像技术又进化,提出两种 GAN 的升级模型 | CVPR 2019...
  5. 使用Log4j - Java异常处理
  6. full GC排查案例
  7. nagios 监控配置介绍(二)
  8. unbantu上python安装步骤_如何在Ubuntu中安装Python 3.6?
  9. win7 'IIS APPPOOL\Classic .NET AppPool' 登录失败
  10. mobaxterm为什么无法连接_为什么 TCP 建立连接需要三次握手
  11. Linux安装python环境方法
  12. Web前端/辅助工具
  13. Hadoop 安装教程
  14. 功率计量芯片HLW8012介绍与应用
  15. 网络工程师中级--下午科目
  16. Wordpress主题制作之首页
  17. 5种数值评分标准总结 - 为预测模型找到正确的度量标准
  18. 用计算机视觉描述机器人,计算机视觉和机器人视觉概述
  19. JavaWeb web.xml配置详解
  20. win10此计算机未连接到网络,win10提示无法连接到此网络是怎么回事 怎么办

热门文章

  1. VB.Net实现Web Service的基础
  2. 【分享】工作流支持邮件提醒相关配置
  3. volatile非原子性示例
  4. 关于C语言中的预处理器的简单笔记
  5. C++ 智能指针详解
  6. 如何用工匠精神突破创新?
  7. burn android images with fastboot
  8. 不可不知 DDoS的攻击原理与防御方法(2)
  9. freebsd 编译核心
  10. 全球第一家只接收BCH的慈善组织