`

标签详细说明带实例代码7

阅读更多
动态Mapped Statement
直接使用JDBC一个非常普遍的问题是动态SQL。使用参数值、参数本身和数据列都是动态的SQL,通常非常困难。典型的解决方法是,使用一系列if-else条件语句和一连串讨厌的字符串连接。对于这个问题,SQL Map API使用和mapped statement非常相似的结构,提供了较为优雅的方法。这里是一个简单的例子:
<select id="dynamicGetAccountList"
cacheModel="account-cache"
resultMap="account-result" >
select * from ACCOUNT
<isGreaterThan prepend="and" property="id" compareValue="0">
where ACC_ID = #id#
</isGreaterThan>
order by ACC_LAST_NAME
</select>
上面的例子中,根据参数bean“id”属性的不同情况,可创建两个可能的语句。如果参数“id”大于0,将创建下面的语句:
select * from ACCOUNT where ACC_ID = ?
或者,如果“id”参数小于等于0,将创建下面的语句:
select * from ACCOUNT
在更复杂的例子中,动态Mapped Statement的用处更明显。如下面比较复杂的例子:
<statement id="dynamicGetAccountList" resultMap="account-result" >
select * from ACCOUNT
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="firstName">
(ACC_FIRST_NAME = #firstName#
<isNotNull prepend="OR" property="lastName">
ACC_LAST_NAME = #lastName#
</isNotNull>
)
</isNotNull>
<isNotNull prepend="AND" property="emailAddress">
ACC_EMAIL like #emailAddress#
</isNotNull>
<isGreaterThan prepend="AND" property="id" compareValue="0">
ACC_ID = #id#
</isGreaterThan>
</dynamic>
order by ACC_LAST_NAME
</statement>
根据不同的条件,上面动态的语句可以产生16条不同的查询语句。使用if-else结构和字符串,会产生上百行很乱的代码。
而使用动态Statement,和在SQL的动态部位周围插入条件标签一样容易。例如:
<statement id="someName" resultMap="account-result" >
select * from ACCOUNT
<dynamic prepend="where">
<isGreaterThan prepend="and" property="id" compareValue="0">
ACC_ID = #id#
</isGreaterThan>
<isNotNull prepend=”and" property="lastName">
ACC_LAST_NAME = #lastName#
</isNotNull>
</dynamic>
order by ACC_LAST_NAME
</statement>
上面的例子中,<dynamic>元素划分出SQL语句的动态部分。动态部分可以包含任意多的条件标签元素,条件标签决定是否在语句中包含其中的SQL代码。所有的条件标签元素将根据传给动态查询Statement的参数对象的情况来工作。<dynamic>元素和条件元素都有“prepend”属性,它是动态SQL代码的一部分,在必要情况下,可以被父元素的“prepend”属性覆盖。上面的例子中,prepend属性“where”将覆盖第一个为“真”的条件元素。这对于确保生成正确的SQL语句是有必要的。例如,在第一个为“真”的条件元素中,“AND”是不需要的,事实上,加上它肯定会出错。以下小节讨论不同的条件元素,包括二元条件元素,一元条件元素和其他动态元素。
分享到:
评论

相关推荐

    DSP 实例代码很不错哦

    "教程"标签则暗示了这些代码不仅可供参考,还可能带有详细的注释和解释,便于自学和教学。"代码"标签则明确指出这是编程实现,而非理论文档。 压缩包内的"实验示例"文件名表明,这些代码可能来源于实验室环境,是...

    实例代码.Rar

    【标题】"实例代码.Rar" 是一个包含ASP.NET网站设计实例源代码的压缩文件,提供了实际操作中的应用示例,对于学习和理解ASP.NET技术非常有帮助。 【描述】"ASP.NET 网站设计实例通 实例代码.Rar" 提示这个压缩包...

    c#网络编程实例教程源代码

    压缩包中的"C#网络编程_PPT"可能是一个包含教程讲解的PowerPoint演示文稿,其中可能包含了详细的概念解释、步骤说明以及代码示例的分析。通过PPT,你可以系统地学习网络编程的各个方面,从基础知识到高级技术,如套...

    部分标签文档实例解释说明

    【标题】:“部分标签文档实例解释说明” 这篇文档主要针对的是如何理解和运用“部分标签”这一概念,这在编程和网站开发中是非常重要的一个部分。部分标签,通常指的是在网页模板或者应用程序中,用于组合和复用...

    C#分词程序源代码实例

    标题 "C#分词程序源代码实例" 涉及的核心知识点主要集中在C#编程语言、文本处理和分词算法上。C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows平台上的软件开发,包括桌面应用、Web应用以及游戏开发...

    c#实例代码chapter2

    1. **程序使用说明.doc**:这通常是一个文档,详细解释了如何使用这些实例代码,包括可能的输入、预期的输出以及执行步骤。阅读这个文档将帮助用户更好地理解每个示例的目的和操作方式。 2. **Desktop_.ini**:这是...

    小游戏实例代码资源网盘地址

    【标签】:“网盘地址”标签提示我们,这些小游戏实例代码是通过网络云存储服务进行分发的,可能是为了方便用户快速下载和分享。通常,这样的资源可能会包含多个文件夹,分别对应不同游戏项目,每个项目下会有相关的...

    源代码-生成柱状图实例代码.zip

    【标题】"源代码-生成柱状图实例代码.zip" 提供的是一个使用ASP(Active Server Pages)技术生成柱状图的源代码示例。在ASP中,我们通常利用服务器端脚本语言如VBScript或JScript来动态生成网页内容。在本案例中,这...

    jsp九大内置对象实例代码学习,可运行,有注释

    以下是这九个内置对象的详细说明,以及如何在实际开发中使用它们: 1. **pageContext对象**: - `PageContext`对象提供对整个JSP页面的访问,可以获取其他所有内置对象的引用,也可以用来存储页面级的数据。 - ...

    下载进度条实例+代码+说明

    标题中的“下载进度条实例+代码+说明”指的是一个实现下载功能并带有进度显示的程序示例,通常在开发过程中,这种组件用于提供用户友好的界面,让用户了解文件下载的状态。这种实例对于开发者来说非常有价值,因为它...

    PHPCMS标签的详细说明

    ### PHPCMS标签的详细说明 #### 中文标签 PHPCMS系统为了简化模板的制作流程及提升用户体验,引入了中文标签的概念。这种标签模式相较于早期版本中的长标签调用方式更加直观易懂,降低了非专业技术人员制作模板的...

    爬虫代码实例源码大全(实例).rar

    此外,它还提到包含了开发文档,这意味着除了源代码外,还有详细的步骤说明、功能解释以及可能的调试和优化指南,帮助学习者理解和实现这些代码。 【标签】"计算机网络"表明这些代码涉及到网络通信,即如何通过HTTP...

    JAVA编程经典实例100个[源代码]

    标题中的“JAVA编程经典实例100个[源代码]”指的是这是一份包含100个Java编程的经典示例的资源包,其中包含了源代码,可以帮助学习者深入理解和掌握Java编程语言的各种核心概念和应用。 描述部分提到,每个实例目录...

    vc基于对话框编程实例源代码

    "源代码"标签表明这个压缩包包含了实现这些功能的实际代码。在www.maoyeah.com.txt、maoyeah和maoyeah_com这三个文件中,可能包含了关于如何使用这些对话框实例的说明、示例代码或者可能是实际的源码文件。`...

    COM编程精彩实例 代码

    标题中的"COM编程精彩实例 代码"意味着这个压缩包包含了使用COM技术的多个实例代码,这些实例可能是解决特定问题或展示特定功能的。通过分析和学习这些实例,开发者可以深入理解COM组件的创建、注册、调用以及它们...

    PHP导入和导出CSV EXCEL实例代码 mysql数据库

    标题中的"PHP导入和导出CSV EXCEL实例代码"指的是使用PHP编写程序,实现对CSV(逗号分隔值)和Excel文件的数据处理。CSV格式是一种简单且通用的数据交换格式,而Excel文件(通常是.xlsx或.xls格式)通常用于更复杂的...

    dsp FIR实例程序代码

    “程序代码”明确了这是关于编程实现的,而“滤波”则说明了代码的核心功能是对信号进行滤波处理,可能包括低通、高通、带通或带阻滤波。 从“压缩包子文件的文件名称列表”来看,只有一个文件名为"FIR",这可能是...

    QT4 GUI 实例代码

    QT4 GUI(图形用户界面)实例代码是一套用于学习和实践C++ GUI编程的资源,特别适合初学者。QT4是Qt库的一个版本,它是一个跨平台的应用程序开发框架,支持Windows、Linux、Mac OS X等多种操作系统。通过QT4,开发者...

    xhtml布局实例说明书例子代码

    本教程将深入探讨XHTML布局实例,通过具体的代码示例来帮助Java学习者更好地理解网页设计的基础。 XHTML布局的核心在于对元素的精确控制,它强调语义化标签的使用,这有助于搜索引擎优化和无障碍访问。例如,`&lt;div&gt;...

    top2812 官方 实例 源代码

    【标签】"top2812 官方 实例 源代码"进一步巩固了我们的理解,即这个资源主要围绕"top2812"进行,包含了官方支持的实例和源代码,适合开发者进行学习和调试。 【压缩包子文件的文件名称列表】:TOP2812_CODE可能...

Global site tag (gtag.js) - Google Analytics