-
ibatis如何配置动静态结合的where语句?3
在项目中有这样的需求,where 后必须要跟上deleted = 0(标志数据已经删除)
其他是动态加上的条件。
我是这样写的。
<dynamic prepend="where">
<isNull property="deleted" prepend="and">p.deleted = 0</isNull>
<isNull property="auditState" prepend="and">p.auditState=20</isNull>
<isNotNull prepend="and" property="no">no = #no#</isNotNull>
也试过
where p.deleted = 0 and p.auditState=20
<dynamic>
<isNotNull prepend="and" property="no">no = #no#</isNotNull>
后一种当no有值时会生成
where p.deleted = 0 and p.auditState=20 andno(no紧贴着and),出错!
有哪位大侠有好的解决办法,希望能指教下!2008年9月27日 19:41
3个答案 按时间排序 按投票排序
-
[1]:
<isNotNull prepend="and " property="no">no = #no#</isNotNull>
也就是: and+空格
[2]:SQL... <dynamic prepend="where">
你这样的做法如果下面的条件都不满足很容易生成这样的SQL: SQL... where
这样肯定会报错的.
你应该改成SQL.. where 1 = 1 <dynamic> <isNotNull prepend="and " ..> .. </isNotNull> </dynamic>
不知道我是否描述清楚了.
2008年9月28日 10:03
相关推荐
iBATIS动态标签是SQL映射文件中的一种功能强大的特性,它允许在SQL语句中进行条件判断,根据传入的参数动态生成合适的查询条件。动态标签主要用于提高灵活性,使得SQL映射文件能够适应多种查询场景,而无需为每种...
iBATIS动态SQL主要通过XML映射文件中的特定标签实现,允许我们根据业务需求动态地构建SQL语句。这些动态元素使得SQL语句可以根据传入的参数值动态地调整,避免了大量IF-ELSE语句或者字符串拼接,提高了代码的可读性...
2.5.3 配置iBATIS(预览) 37 2.5.4 构建应用程序 38 2.5.5 运行应用程序 39 2.6 iBATIS未来的发展方向 40 2.6.1 Apache软件基金会 40 2.6.2 更简单、更小且依赖性更少 40 2.6.3 更多的扩展点和插件 41 2.6.4 支持更多...
iBATIS是阿里巴巴开源的一个持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java代码的分离,极大地提高了开发效率。下面我们将详细探讨iBATIS的核心概念、功能以及如何在实际项目中有效利用...
映射文件中,我们可以定义SQL语句,包括静态SQL和动态SQL。例如: ```xml SELECT * FROM user WHERE id = #{id} ``` 其中`#{id}`是参数占位符,会自动处理SQL注入。 5. **动态SQL** Ibatis的动态SQL功能...
9. **动态SQL**:iBatis的动态SQL功能强大,允许在XML映射文件中直接编写条件语句,避免了大量重复的静态SQL。例如,`<if>`、`<where>`、`<foreach>`等标签可以帮助构建灵活的SQL。 10. **插件支持**:iBatis允许...
这里通过静态代码块初始化了`SqlMapClient`对象,这是ibatis的核心组件之一,负责执行映射文件中定义的各种操作。 1. **获取配置文件**:通过`Resources.getResourceAsReader("SqlMapConfig.xml")`获取配置文件的...
Ibatis的核心组件包括SqlMapConfig.xml配置文件、SQL映射文件(例如:UserMapper.xml)以及对应的Mapper接口。SqlMapConfig.xml是全局配置文件,用于定义数据源、事务管理器等;SQL映射文件则包含具体的SQL语句,而...
- 结合iBatis的注解,可以创建Mapper接口,直接在接口方法上写SQL,如`@Select("SELECT * FROM user WHERE id = #{id}")`,并由MyBatis动态执行。 7. **持续学习与进阶**: - 学习如何配置Spring的注解驱动模式,...
2. **Mapper XML 文件中的静态 SQL**:在映射文件中定义 SQL 语句,通过 `@Select`, `@Insert`, `@Update`, `@Delete` 等注解与接口方法关联。 3. **注解方式**:在 Service 或 Dao 接口的方法上直接使用注解来定义 ...
- **iBATIS**(现称为MyBatis):更侧重于SQL语句的灵活性,允许开发者编写自定义的SQL语句,适合复杂查询和特定优化场景。 两者各有优势,选择哪个取决于项目需求和团队技能。对于需要快速开发、对性能要求不高的...
- **iBATIS**: (现在更名为MyBatis) 是一个半自动的ORM框架,更适合对SQL有特殊需求的应用。 - **JDBC封装**: 通过手工编写Java代码直接使用JDBC进行数据库操作,这种方式灵活性较高但相对复杂。 **Ajax框架** - *...