`
lydia_Study
  • 浏览: 28464 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

ibatis and 未被拼接上的问题

 
阅读更多

 

ibatis中,

<dynamic prepend="WHERE">

<isNotNull property="deviceId" prepend="AND"> tdi.deviceId = #deviceId# </isNotNull>

</dynamic>

<dynamic>元素划分出SQL语句的动态部分,动态部分可以包含任意多的条件标签元素,条件标签决定是否在语句中包含其中的SQL代码。所有的条件标签元素将根据传给动态查询Statement的参数对象的情况来工作。<dynamic>元素和条件元素都有"prepend"属性,它是动态SQL代码的一部分,在必要情况下,可以被父元素的"prepend"属性覆盖。"prepend"属性"where"将覆盖第一个为"真"的条件元素,这对于确保生成正确的SQL语句是有必要的。 例如:在第一个为"真"的条件元素中,"AND"是不需要的。

例如:

<dynamic prepend="WHERE">

<![CDATA[

tam.signalCode <> 0 

]]>

<isNotNull property="sureStatusList" prepend="AND "> tam.sureStatus IN(

    <iterate property="sureStatusList" conjunction=",">#sureStatusList[]#</iterate>)

    </isNotNull>

</dynamic>

由于"prepend"属性"where"将覆盖第一个为"真"的条件元素,因此拼接之后的sql为:

"WHERE tam.signalCode <> 0 tam.sureStatus IN()",很明显拼接之后的sql是不对的。

正确的写法为:

 

WHERE 1 = 1 

<dynamic>

<![CDATA[

AND tam.signalCode <> 0 

]]>

<isNotNull property="sureStatusList" prepend="AND "> tam.sureStatus IN(

    <iterate property="sureStatusList" conjunction=",">#sureStatusList[]#</iterate>)

 </isNotNull>

分享到:
评论

相关推荐

    ibatis拼接字符串

    在本篇文章中,我们将深入探讨如何使用 Java 编程语言结合 iBatis 框架进行 SQL 字符串的动态拼接。通过分析提供的代码片段,我们可以了解到在实际开发过程中,这种动态 SQL 的构建方式非常常见,尤其是在处理复杂的...

    ibatis and和or联合查询 .doc

    ### ibatis and和or联合查询知识点 #### 一、ibatis简介 ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀开源数据访问框架。ibatis消除了几乎所有的JDBC对象操作,提供了一个简单的基本API,它通过XML或...

    ibatis中iterate的例子

    在Java Web开发中,iBatis(现在称为MyBatis)是一个流行的持久层框架,它提供了灵活的SQL映射机制,使得数据库操作更加便捷。在iBatis中,`&lt;iterate&gt;`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、...

    ibatis企业开发报表前调试(日志,复杂sql动态拼接)

    在企业级开发中,Ibatis 作为一个轻量级的持久层框架,被广泛应用于Java Web应用中。它的灵活性和易用性使得开发者可以方便地处理复杂的SQL操作,尤其是在报表开发时,动态SQL的功能尤为重要。然而,在调试过程中,...

    struts2 and ibatis

    iBATIS(现在的MyBatis)是一个轻量级的持久层框架,它解决了JDBC的繁琐和不易维护的问题。iBATIS允许开发者将SQL语句直接写在XML配置文件中,或者通过注解方式内嵌到Java代码中,实现了SQL与Java代码的解耦。此外,...

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,这些参数由逗号分隔,并在`AND`语句中拼接`OR`子句来实现动态查询。这种场景在处理用户多选过滤条件时非常常见,比如在一个搜索框中,...

    ibatis的dynamicSQL中,关于prepend的使用

    例如,在构建复杂的查询条件时,通过使用`prepend="and"`或`prepend="where"`,可以避免手动编写复杂的条件拼接逻辑,从而提高代码的可读性和维护性。 总之,ibatis中的动态SQL及其`prepend`功能提供了强大的工具来...

    常用ibatis配置

    在iBatis配置中,可以使用&lt;isNotNull prepend="and"&gt;等标签来确保只有当日期字段不为空时,才会将相应的日期范围查询条件拼接到SQL语句中。 6. list集合:当需要根据一组特定的值进行查询时,例如IN操作,iBatis...

    Ibatis复杂查询语句.doc

    在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...

    Ibatis.net 分页

    Ibatis.NET是一款轻量级的ORM(对象关系映射)框架,它允许开发者将SQL查询直接集成到.NET应用程序中,从而避免了传统的ADO.NET代码。在处理大量数据时,分页查询是必不可少的功能,可以有效地减少数据库负载并提高...

    ibatis动态注入

    这些动态元素使得SQL语句可以根据传入的参数值动态地调整,避免了大量IF-ELSE语句或者字符串拼接,提高了代码的可读性和可维护性。 首先,我们来看一个简单的例子。以下是一个查询用户列表的SQL映射: ```xml ...

    ibatis的动态查询

    ### ibatis的动态查询知识点详解 #### 一、模糊查询 **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` ...

    ibatis教程_查询指定id的单个对象

    此外,Ibatis支持动态SQL,如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签,可以根据条件拼接SQL,提高了SQL的灵活性。例如,如果需要在查询时添加额外的条件,你可以这样做: ```xml SELECT * FROM users...

    SSI整合,有ibatis连接oracle的分页,ajax等技术

    开发者可能在Web服务器上配置了SSI支持,同时在后端设置了Ibatis与Oracle数据库的连接,前端使用JavaScript和AJAX来与后端进行交互,实现动态加载分页数据。 从"压缩包子文件的文件名称列表"来看,虽然具体文件内容...

    ibatisDEMO

    然后,Ibatis支持动态SQL,可以依据条件灵活拼接SQL。例如,使用`&lt;if&gt;`标签来判断条件是否执行某个部分的SQL: ```xml != null"&gt; AND username = #{username} ``` 在Java代码中,通过SqlSession的`selectOne`、`...

    ibatis SQL Map PPt

    通过使用`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;trim&gt;`, `&lt;foreach&gt;`等标签,我们可以轻松实现SQL的条件判断、循环、拼接等操作,极大地提高了SQL的可读性和可维护性。 例如,当我们...

    ibatis技术

    综上所述,Ibatis(MyBatis)作为Java世界中的持久层解决方案,以其独特的设计和强大的功能,为开发者提供了便捷的数据访问手段。通过深入理解和熟练运用,开发者可以更高效地进行数据库操作,提高项目的可维护性和...

    IBatis3.1 实例

    在本实例中,我们将深入探讨IBatis3.1版本的核心特性、配置、使用方法以及常见问题。 ### 一、IBatis3.1概述 IBatis3.1是该框架的一个稳定版本,主要改进了SQL映射文件的结构,增强了动态SQL的功能,并且提供了更...

    Mybatis 中 Oracle 的拼接模糊查询及用法详解

    Mybatis 中 Oracle 的拼接模糊查询及用法详解 Mybatis 是一个基于 Java 的持久层框架,提供了强大的数据库交互能力,而 Oracle 则是业界最流行的关系数据库管理系统。本文将详细介绍 Mybatis 中 Oracle 的拼接模糊...

Global site tag (gtag.js) - Google Analytics