0 0

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个答案 按时间排序 按投票排序

0 0

[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
0 0

你第一个语句有问题吗?
第二个你把<dynamic> 去掉试试

2008年9月28日 08:39
0 0

http://www.iteye.com/topic/38820

2008年9月27日 21:33

相关推荐

    iBATIS动态标签

    iBATIS动态标签是SQL映射文件中的一种功能强大的特性,它允许在SQL语句中进行条件判断,根据传入的参数动态生成合适的查询条件。动态标签主要用于提高灵活性,使得SQL映射文件能够适应多种查询场景,而无需为每种...

    ibatis动态注入

    iBATIS动态SQL主要通过XML映射文件中的特定标签实现,允许我们根据业务需求动态地构建SQL语句。这些动态元素使得SQL语句可以根据传入的参数值动态地调整,避免了大量IF-ELSE语句或者字符串拼接,提高了代码的可读性...

    iBATIS实战

    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 电子书

    iBATIS是阿里巴巴开源的一个持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java代码的分离,极大地提高了开发效率。下面我们将详细探讨iBATIS的核心概念、功能以及如何在实际项目中有效利用...

    ibatis初学者学习例程,一看就懂!

    映射文件中,我们可以定义SQL语句,包括静态SQL和动态SQL。例如: ```xml SELECT * FROM user WHERE id = #{id} ``` 其中`#{id}`是参数占位符,会自动处理SQL注入。 5. **动态SQL** Ibatis的动态SQL功能...

    ibatis开发指南

    9. **动态SQL**:iBatis的动态SQL功能强大,允许在XML映射文件中直接编写条件语句,避免了大量重复的静态SQL。例如,`&lt;if&gt;`、`&lt;where&gt;`、`&lt;foreach&gt;`等标签可以帮助构建灵活的SQL。 10. **插件支持**:iBatis允许...

    ibatis笔记

    这里通过静态代码块初始化了`SqlMapClient`对象,这是ibatis的核心组件之一,负责执行映射文件中定义的各种操作。 1. **获取配置文件**:通过`Resources.getResourceAsReader("SqlMapConfig.xml")`获取配置文件的...

    03_ibatis教程_查询指定id的单个对象.rar

    Ibatis的核心组件包括SqlMapConfig.xml配置文件、SQL映射文件(例如:UserMapper.xml)以及对应的Mapper接口。SqlMapConfig.xml是全局配置文件,用于定义数据源、事务管理器等;SQL映射文件则包含具体的SQL语句,而...

    webwork+spring+ibatis注解培训文档

    - 结合iBatis的注解,可以创建Mapper接口,直接在接口方法上写SQL,如`@Select("SELECT * FROM user WHERE id = #{id}")`,并由MyBatis动态执行。 7. **持续学习与进阶**: - 学习如何配置Spring的注解驱动模式,...

    框架mybatis

    2. **Mapper XML 文件中的静态 SQL**:在映射文件中定义 SQL 语句,通过 `@Select`, `@Insert`, `@Update`, `@Delete` 等注解与接口方法关联。 3. **注解方式**:在 Service 或 Dao 接口的方法上直接使用注解来定义 ...

    总结问题集合

    - **iBATIS**(现称为MyBatis):更侧重于SQL语句的灵活性,允许开发者编写自定义的SQL语句,适合复杂查询和特定优化场景。 两者各有优势,选择哪个取决于项目需求和团队技能。对于需要快速开发、对性能要求不高的...

    开发人员结构化面试大纲

    - **iBATIS**: (现在更名为MyBatis) 是一个半自动的ORM框架,更适合对SQL有特殊需求的应用。 - **JDBC封装**: 通过手工编写Java代码直接使用JDBC进行数据库操作,这种方式灵活性较高但相对复杂。 **Ajax框架** - *...

Global site tag (gtag.js) - Google Analytics