ibatis动态查询条件(转载待完善)
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动态查询条件(转载待完善)相关推荐
- ibatis动态查询条件
ibatis的调试相对困难,出错的时候主要依据是log4生成的log文件和出错提示,这方面要能比较熟练的看懂. 下面这个配置基本上包含了最复杂的功能:分页\搜索\排序\缓存\传值Hash表\返回has ...
- 浅析Entity Framework Core2.0的日志记录与动态查询条件
前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core2.0的日志记录与动态查询条件 去 ...
- linq之InnerJoin和LeftJoin以及封装动态查询条件版本
Linq的出现,使数据集的处理显得愈来愈简便.很多时候对于本地数据集的处理,脑海中的第一反应,即尝试使用Linq来实现.诸如DataTable的innerJoin以及leftJoin等操作,很多时候我 ...
- Vue动态查询条件-Vue动态查询规则-Vue多条件分组组合查询-递归组件(一):前端
先看最终的效果: 最近项目上有一个需求,VUE前端要实现动态查询条件组件,后端就能够动态组装SQL. 要模仿人家Azure Devops的查询功能,我丢,Azure Devops是人家微软开发的个东西 ...
- jpa 动态查询条件 数组_Spring data jpa 复杂动态查询方式总结
一.Spring data jpa 简介 首先JPA是Java持久层API,由Sun公司开发, 希望整合ORM技术,实现天下归一. 诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,目前也是 ...
- sql不用拼接语句实现动态查询条件
DECLARE @oFrom INT SET @oFrom = 2SELECT * FROM baseinfo WHERE 1 = 1 AND ((@oFrom = 0 and Type = 'Ord ...
- java中动态查询条件,Java实现动态添加查询条件
今天遇到一个问题,就是需要根据前端页面发送的条件查询数据库记录,但是前端发送的条件是不确定的.如果使用mybatis的xml方法可以使用if标签灵活的添加判断条件,但是现在我使用的就是单纯的sql. ...
- Springboot中对jpa动态查询条件的封装
jpa对于固定参数的条件查询比较简单,可以在Repository中直接用参数名来查询.但是对于不固定的参数查询就比较麻烦了,官方提供的是继承JpaSpecificationExecutor,然后自己拼 ...
- 柏睿数据java_数据库动态查询最佳实现 陈氏查询
我占个位,命名为陈氏查询!一帮所谓牛人总说不是什么创新,为我的"陈氏查询"名称感到很不爽!但他们所提供的证据范例个人认为连ibatis的做法都不如,反增加了开发的麻烦! 还是开门见 ...
最新文章
- Day 1 AR认知课 || AIRX三次方
- 机器学习经典论文/survey合集
- 在远程桌面在目标主机与客户机复制文件?
- obj模型转json模型_微软文字转图像技术又进化,提出两种 GAN 的升级模型 | CVPR 2019...
- 使用Log4j - Java异常处理
- full GC排查案例
- nagios 监控配置介绍(二)
- unbantu上python安装步骤_如何在Ubuntu中安装Python 3.6?
- win7 'IIS APPPOOL\Classic .NET AppPool' 登录失败
- mobaxterm为什么无法连接_为什么 TCP 建立连接需要三次握手
- Linux安装python环境方法
- Web前端/辅助工具
- Hadoop 安装教程
- 功率计量芯片HLW8012介绍与应用
- 网络工程师中级--下午科目
- Wordpress主题制作之首页
- 5种数值评分标准总结 - 为预测模型找到正确的度量标准
- 用计算机视觉描述机器人,计算机视觉和机器人视觉概述
- JavaWeb web.xml配置详解
- win10此计算机未连接到网络,win10提示无法连接到此网络是怎么回事 怎么办