`

ibatis通过重用sql

    博客分类:
  • ORM
阅读更多

当我们写SqlMap xml的时候,经常会碰到重复的SQL片段,例如where语句或者约束条件;iBATIS提供了一个强大的标签来复用这些重复片段,简单举例,我们想检索一些字段,并且想统计它们。

通常情况下,你会这样写:

<select id="selectCount" resultClass="int">      
  SELECT COUNT(*) AS total       
  FROM items       
  WHERE id = 6  and groupId = 4
select>      
<select id="selectOne" resultClass="Item">      
  SELECT id, name       
  FROM items       
   WHERE id = 6  and deleted= true      
select>

 

为了消除重复片段,我们使用【sql】和【include】标签。【sql】标签用来包含重复片段,【include】标签用来引入片段:

<sql id="dao_where_statement">
  <dynamic prepend="where">
  <isNotNull prepend="and" property="id">
         id = #id#
       </isNotNull>
       <isNotNull prepend="and">
         groupId = #groupId#
       </isNotNull>
       <isNotNull prepend="and" property="deleted">
         DELETED = #deleted#
       </isNotNull>
     </dynamic>
   </sql> 

 还可以通过isNotNull判断属性条件,这样就达到了where条件查询的重用

     
<select id="selectCount" parameterClass="int" resultClass="int">      
  SELECT COUNT(*) AS total  from items       
  <include refid="dao_where_statement"/>      
<select> 

 

 注意很重要的一点,要引用的sql标签一定要定义在select上面,否则查询不到。我用的时候就遇到了这个问题。

分享到:
评论

相关推荐

    ibatis动态SQL标签用法

    iBatis动态SQL标签用法 iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成...通过使用动态SQL片段和动态条件分页查询,我们可以提高代码的可重用性、查询效率和灵活性。

    iBATIS-SqlMaps-2_ja.pdf

    - **SQL 片段重用**:通过 `&lt;sql&gt;` 元素定义通用的 SQL 片段,提高代码复用性。 - **键值自动生成**:配置主键自增或其他机制来自动为新记录生成唯一的标识符。 - **存储过程**:支持调用数据库中的存储过程,并处理...

    iBATIS SQL Maps官方中文教程(PDF)

    1. iBATIS简介:iBATIS是一个开源的Java持久层框架,它简化了数据库与应用程序之间的交互,通过将SQL语句直接映射到Java代码,避免了传统的ORM(对象关系映射)框架的复杂性。iBATIS的核心组件包括Data Access ...

    ibatis基础教学文档

    通过SQL Maps,开发者可以将SQL语句和业务逻辑分离,提高代码的可读性和可维护性。 与传统的JDBC相比,iBATIS的主要优势在于: 1. 减少代码量:iBATIS能够减少大约61%的代码编写工作。 2. 性能提升:iBATIS作为架构...

    ibatis教程,ibatis帮助文档

    SQL Maps是iBATIS的核心,通过XML文件定义了Java对象与SQL语句之间的映射,大大减少了数据库操作的代码量。这种映射方式使得SQL语句的管理更加灵活,也更易于理解和维护。 二、iBATIS与传统JDBC的比较 iBATIS与JDBC...

    iBATIS SQL Maps開發指南(中文)

    通过使用iBATIS,开发人员可以避免陷入传统的JDBC编码困境,更专注于业务逻辑的实现。 在iBATIS中,SQL Maps是核心组件之一,它是XML配置文件,用于定义数据库交互的SQL语句和结果映射。SQL Maps定义了如何将数据从...

    iBATIS_API_DOC.rar_doc_ibatis a_ibatis api_ibatis d

    通过SQL Maps,你可以定义动态的、可重用的SQL,而无需在Java代码中硬编码。 2. 映射器接口:在iBATIS 2.x中,映射器是基于XML的,而在3.x版本中,引入了映射器接口,这是一个Java接口,其中的方法对应于XML配置...

    iBATIS框架源码剖析源码

    5. **参数映射(Parameter Maps)**:在调用SQL时,iBATIS通过Parameter Maps将Java对象的属性映射到SQL语句的参数。 6. **缓存机制**:iBATIS提供了一种缓存机制,可以缓存查询结果,提高应用程序性能。缓存可以在...

    ibatis-api中文(真的中文)

    在iBATIS中,DAO层可以帮助你创建可重用的对象,这些对象可以直接执行SQL查询并处理结果。这个文档会详细介绍如何创建和使用DAO类,以及如何将它们集成到你的项目中,以实现高效且灵活的数据访问。 最后,`iBATIS-...

    ibatis-2 源代码

    iBatis提供插件机制,通过拦截器(Interceptor)可以在SQL执行前后插入自定义逻辑,如性能监控、日志记录等。 8. **SVN版本控制** SVN(Subversion)是源代码版本控制系统,用于追踪代码变更历史。下载的iBatis...

    ibatis jar

    总的来说,iBATIS提供了一种灵活的ORM解决方案,通过将SQL与Java对象绑定,简化了数据库操作,同时保留了SQL的强大功能。对于需要处理复杂数据库交互的Java开发者,iBATIS是一个值得考虑的工具。通过深入学习和使用...

    Ibatis.rar

    3. Mapper接口和Mapper XML文件:Ibatis 提倡面向接口的编程,通过定义Mapper接口,我们可以将业务逻辑代码与SQL执行分离。Mapper XML文件中的SQL语句与Mapper接口的方法相对应,这样在运行时,Ibatis会自动将方法...

    ibatis日期格式.doc

    在iBatis中,实现批量删除可以通过动态SQL,使用`IN`操作符结合`&lt;foreach&gt;`标签,将选中的ID集合传入SQL语句中。 2. **小组审核管理** - **问题1**: 建议优化`search`方法,使用联合查询替代多条SQL语句。iBatis...

    ibatis3.0示例

    通过以上对iBatis 3.0核心知识点的解析,我们可以看到,无论是配置、映射、动态SQL,还是事务管理、缓存和插件,iBatis都提供了强大且灵活的解决方案。结合mybatis-jpetstore-6.0.1示例,读者不仅可以深入理解iBatis...

    ibatis技术总结

    ### ibatis技术总结 #### 1. 创建iBatis工程的步骤 ...通过对iBatis的基本概念、配置文件结构以及动态SQL的支持等方面的深入了解,开发者可以更好地利用iBatis的强大功能,提高应用的性能和可维护性。

    Ibatis所有的包

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责处理数据库的SQL映射,将数据库操作与业务逻辑分离,提供更加灵活的数据库访问方式。Ibatis最初由Clinton Begin创建,后来发展为MyBatis,由Google ...

    ibatis开发指南(中文版)

    例如,你可以使用`&lt;resultMap&gt;`定义结果集映射,`&lt;parameterMap&gt;`定义参数映射,通过这些映射,iBatis可以自动将Java对象转化为SQL参数,或将查询结果转化为Java对象。同时,动态SQL功能允许我们在不改变Mapper配置...

    ibatis多表查询过程

    iBatis的动态SQL功能非常强大,可以通过`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;where&gt;`、`&lt;set&gt;`等标签编写条件语句,根据传入参数动态生成SQL。 ### 8. 使用`&lt;foreach&gt;`标签 `&lt;foreach&gt;`标签用于遍历...

Global site tag (gtag.js) - Google Analytics