ibatis 的dynamic这样写会有问题,如果有条件成立,出现where 后面会少一个and,这是因为ibatis的dynamic语句会默认把第一个条件成立的predend字段去掉,比如如果下面两个条件都成立,那么最终的语句会变成where status=status的值 and name=name的值,
where
<dynamic prepend=" ">
<isNotEmpty prepend="and" property="status">
status = #status#
</isNotEmpty>
<isNotEmpty prepend="and" property="name">
name = #name#
</isNotEmpty>
</dynamic>
所以必须得写成
where
<dynamic prepend="and">
<isNotEmpty prepend="and" property="status">
status = #status#
</isNotEmpty>
<isNotEmpty prepend="and" property="name">
name = #name#
</isNotEmpty>
</dynamic>
分享到:
相关推荐
其中,动态SQL是ibatis的一个非常强大的特性,允许开发者根据不同的条件构建出复杂的SQL查询语句。 ### 关于ibatis动态SQL中的`prepend` #### 1. 动态SQL元素 在ibatis中,`<dynamic>`标签是用来构建动态SQL的...
例如,在`<select>`标签中,通过`<dynamic prepend="where module">`可以构建带有条件的SQL查询语句,其中的`prepend`属性用于指定条件语句的前缀。这种方式不仅简化了代码,还提高了SQL语句的可读性和可维护性。 ...
根据给定的文件信息,以下是对“Ibatis常用SQL语句”的详细解析,涵盖了一系列Ibatis在数据操作中的应用实例。 ### Ibatis简介 Ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀持久层框架。Ibatis可以让...
iBatis 16个常用SQL语句 iBatis是一个基于Java的持久层框架,提供了一个简洁的方式来访问和操作数据库。在iBatis中,SQL语句是通过XML文件来配置的。下面是16个常用的iBatis SQL语句,涵盖了基本的CRUD(Create、...
- `<dynamic>`标签用于动态生成SQL语句的部分,它允许根据传入参数的值来决定是否包含某个条件。例如,`<isNotEmpty>`标签用于检查参数是否为空,如果非空,则将包含其后的SQL片段。 2. **子查询**: - 在这个...
`<dynamic>`标签是iBATIS动态标签的核心,它允许在其内部包含一系列的条件标签,根据不同的条件来决定哪些部分应该被插入到最终的SQL语句中。`<dynamic>`标签有三个主要属性: 1. `prepend`: 在动态内容前添加的字符...
IBATIS,现在更广为人知的名字为MyBatis,是一种半自动映射的持久层框架,它允许开发者以声明的方式进行SQL语句的编写,同时提供了动态SQL的功能,这使得SQL语句可以在运行时根据条件动态生成,极大地提高了SQL的...
在 iBatis 中,动态查询条件是通过 `<dynamic>` 元素来实现的,该元素可以根据参数的值来生成不同的 SQL 语句。 在 iBatis 中,参数可以是基本类型、字符串、集合等,它们可以通过 `#` symbols 来传递给 SQL 语句。...
例如,在上面的示例代码中,我们使用 `<dynamic>` 元素来定义动态 SQL 语句,在其中使用 `<isNotNull>`、`<isGreaterThan>`、`<isLessThan>` 等元素来构建条件语句。 这些元素可以根据参数的值动态地生成 SQL 语句...
Dynamic SQL 功能是 ibatis 中的一项重要特性,允许开发者根据运行时的条件动态构建 SQL 语句。本文将详细介绍 ibatis 中 Dynamic SQL 的使用方法,特别关注 `<dynamic>` 标签及其相关的子标签。 #### 二、Dynamic ...
2. **条件过滤**:通过 `<dynamic>` 标签实现了动态 SQL,根据传入的参数决定是否添加 WHERE 子句。 3. **排序**:通过 `$page.sortFieldName$` 实现动态排序字段的选择,并且支持正序或倒序。 4. **分页**:使用 `...
iBatis提供了动态SQL片段的功能,可以将SQL语句拆分成小的、独立的片段,然后根据不同的条件组合这些片段生成最终的SQL语句。这可以提高代码的可重用性和灵活性。 例如,在上面的代码中,我们定义了三个动态SQL片段...
在使用iBatis进行数据库操作的过程中,可能会遇到各种各样的问题。这些问题往往由于iBatis错误信息的隐晦性而难以快速定位与解决。本文将根据所提供的标题、描述及部分内容,详细阐述在使用iBatis时可能遇到的一些...
2. Dynamic SQL:iBATIS支持动态SQL,这意味着你可以根据条件在运行时构建SQL语句,极大地提高了灵活性。例如,你可以使用if、where、choose(when/otherwise)等元素实现条件判断。 3. Mapped Statements:每个SQL...
5. **Dynamic SQL**: iBATIS 提供了动态 SQL 功能,允许在 SQL Map 文件中使用条件语句,如 `if`、`choose`、`when`、`otherwise` 等,根据输入参数的不同生成不同的 SQL 语句。 6. **Transaction Management**: ...
动态SQL让开发者可以根据条件动态构造SQL语句,使用`if`, `choose`, `when`, `otherwise`等元素。例如: ```xml SELECT * FROM User WHERE <dynamic prepend="WHERE"> name LIKE '%$name$%' age = #age# ...
SQL Maps是iBATIS的核心组件,负责定义SQL语句和Java对象之间的映射关系。这份文档可能会详细解释如何编写和配置SQL Map XML文件,以及如何在Java代码中调用这些映射进行数据操作。 3. **iBATIS-SqlMaps-2-Tutorial...
6. **Dynamic SQL**:iBATIS支持动态SQL,允许在SQL语句中使用条件判断,提高SQL的灵活性和可维护性。 7. **Transactions**:iBATIS提供了事务管理功能,可以控制SQL操作的原子性,确保数据的一致性。 8. **Cache*...
最后,从Ibatis2.x到Mybatis3.x的迁移过程中,需要注意兼容性问题。升级前,需要全面评估现有的SQL Map配置、Mapper接口和实体类,确保在新的版本下能够正常工作。此外,还需要检查和更新相关的依赖库,因为Mybatis3...