`
yjhexy
  • 浏览: 331584 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

IBATIS Iterate用法 初探

阅读更多

IBATIS里的iterate标签提供了遍历List 来动态构造SQL。

 

主要写下使用的时候的注意点:

 

在BabyDAOImpl类里面些这么一个方法

 

	/**
	 * 测试iterator
	 */
	public List<BabyDO> queryByIds(Map idsMap) throws SQLException {
		return client.queryForList("queryByIds", idsMap);
	}

 

配置的sqlMap如下:

 

	<select id="queryByIds" resultMap="baby-Result" parameterClass="java.util.Map">
		select * from Baby where id in (
		<!-- iterate标签的property属性是parameterClass里面去找一个属性,这个属性实现了Iterable接口 -->
		<iterate property="idsList" conjunction=",">
			#idsList[]#
		</iterate>
		)
	</select>

 这里有两个注意点:

第一点:

注意这里我们一般用 #传入的参数名称[]#  。而不太用$idsList[]$。

这个#和 $ 的区别是:

#  使用的是PreparedStatement 机制,生成的SQL字符串中含有很多?,这些?会被动态的添加参数进去查询

$  中的变量好比字符串直接替换。

 

第二点:

<iterate property  ……

这个property标签的指应该是 parameterClass里面去找一个属性,这个属性实现了Iterable接口。

如果本是传的就是 一个list,并且就是这个里面需要遍历的,那么不需要 指定property,否则会报错说ArrayList里找不到你说的这个property属性。(上例我传了一个Map进来,在Map里我放了一个idsList这么一个list。所以需要加上property属性)

 

 

=================================邪恶的分割线 ==============================

 

另外一种情况,如果传进来的是个List<BabyDO>,那么代码应该如下:

BabyDAOImpl

/**
	 * 测试iterator
	 */
	public List<BabyDO> queryByIds(List<BabyDO> babys) throws SQLException {
		return client.queryForList("queryByIds", babys);
	}
 

SQLMap :

 

	<select id="queryByIds" resultMap="baby-Result" parameterClass="java.util.ArrayList">
		select * from Baby where id in (
		<!-- iterate标签的property属性是parameterClass里面去找一个属性,这个属性实现了Iterable接口 -->
		<iterate conjunction=",">
			#babys[].id#
		</iterate>
		)
	</select>

 

这里的注意点:


第一点:

本身传的就是一个ArrayList,所以不需要设置property。


第二点:

我要的是BabyDO当中的id作为遍历条件。所以需要加上“.id”。

 

 

 

 

 

 

 

分享到:
评论
2 楼 zhanggang807 2016-05-20  
这个ibatis 还真是不好用啊。楼主解决了我看文档也没解决的问题
1 楼 ka520888 2010-10-15  
哥们...多谢.解决了我的问题!

相关推荐

    ibatis中iterate的例子

    当调用这个方法时,iBatis会自动生成如下SQL: ```sql SELECT * FROM users WHERE id IN (1, 2, 3, ...) ``` 注意,`#{ids[index]}`中的`index`是可选的,如果省略,则默认使用集合中的元素。如果需要访问集合中的...

    ibatis标签

    标题中的“ibatis&lt;iterate&gt;标签”指的是在iBATIS框架中用于动态SQL的一个关键功能。iBATIS是一个优秀的持久层框架,它允许将SQL语句直接嵌入到Java代码中,简化了数据库操作。而`&lt;iterate&gt;`标签是iBATIS提供的一个...

    详细介绍Ibatis的用法

    ### 详细介绍Ibatis的用法 #### Ibatis概述与特点 Ibatis是一个开源的持久层框架,它通过简单的XML配置文件将JavaBean映射到SQL语句上,从而极大简化了对关系数据库的操作。与其他数据库持久层框架如JDO、...

    iBatis Web用法实例

    在这个"iBatis Web用法实例"中,我们将深入探讨如何在Web项目中集成并使用iBatis,以及相关的最佳实践。 1. **iBatis 概述**: iBatis 作为轻量级的ORM(对象关系映射)框架,它的核心思想是将SQL与Java代码分离,...

    ibatis list

    ### iBatis批量操作:`&lt;iterate&gt;`标签的使用 `&lt;iterate&gt;`标签是iBatis中用于循环遍历集合的一种机制,它允许你在SQL语句中动态生成参数列表,这对于批量操作(如批量插入、更新或删除)尤为重要。该标签支持多种...

    ibatis入门与ibatis迭代的用法

    **iBatis的使用步骤** 1. **配置环境**:引入iBatis的jar包,并在项目中配置SqlMapConfig.xml文件,包括数据源、事务管理器等。 2. **编写SQL映射文件**:创建XML文件,定义SQL语句,包括查询、插入、更新和删除等...

    ibatis批量处理

    ### iBatis批量处理知识点详解 #### 一、iBatis基本实现 iBatis(现已更名为MyBatis)是一...此外,合理选择不同的实现方式(如直接使用iBatis API、基于Spring事务管理或使用回调方式),可以使程序更加灵活、高效。

    ibatis的使用教程

    Ibatis 提供了一些基本的API,如查询、添加、删除和修改方法。通常,会通过 SqlMapClient 的工厂类创建 SqlMapClient 实例,以管理数据库操作。例如,使用 SqlMapClientBuilder 创建 SqlMapClient 对象,然后执行...

    iBATIS缓存的使用方法

    ### iBATIS缓存的使用方法 在数据库访问框架iBATIS中,缓存机制是一项重要的功能,它能够显著提高应用程序的性能。本文将详细介绍iBATIS中的缓存使用方法,包括缓存模型的配置、不同类型的缓存控制器以及如何在SQL...

    IBatis.Net使用方法

    ### IBatis.Net 使用方法详解 #### 一、概述 IBatis.NET是一款开源的数据访问层框架,它能够将对象与数据库中的记录映射起来,并提供了一系列的工具帮助开发者更高效地处理数据访问逻辑。本文将围绕如何下载、编译...

    ibatis乱码解决方法(ibatis独立)

    在IT行业中,数据库操作是必不可少的一部分,而Ibatis作为一款流行的Java持久层框架,它使得SQL与Java代码更好地...对于`ibatisdemo`这个项目,你可以按照上述方法检查并调整项目的配置,以解决可能出现的乱码问题。

    ibatis总结 ibatis ibatis ibatis ibatis

    Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...

    ibatis demo,ibatis例子,ibatis示例

    通过这个demo,你可以了解到Ibatis的基本用法,如何编写SQL映射文件,如何设计Mapper接口,以及如何在Java代码中调用这些接口执行数据库操作。同时,也能掌握Ibatis的动态SQL特性,以及如何配合Spring进行更高效的...

    ibatis批量存储

    使用Ibatis的批处理,首先需要开启SqlSession的自动提交,然后调用SqlSession的batch()方法进入批处理模式,接着执行多次insert、update或delete操作,最后调用commit()方法提交事务。这种方式避免了频繁的数据库...

    ibatis简易使用 ibatis简易使用 ibatis简易使用

    以下是对iBATIS简易使用的详细解释: 1. **环境准备**: - **jar文件**:iBATIS框架运行需要依赖一些库文件,包括`log4j`用于日志记录,`ibatis`核心库,以及`jdbc`驱动,这些都需要添加到项目的类路径中。 - **...

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    SqlMap接口则封装了SQL语句,提供了数据操作的方法;Executor执行器是整个框架的执行核心,负责处理SQL的执行和结果映射。 二、SqlMapConfig配置解析 iBatis的配置文件SqlMapConfig.xml是系统启动时加载的关键,它...

    ibatis动态SQL标签用法

    iBatis动态SQL标签用法 iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,...

    iBATIS-DAO-2.3.4.726.rar_com.ibatis.dao_iBATIS dao 2_iBatis DAO_

    通过阅读和理解源码,开发者不仅能掌握iBATIS DAO的基本使用,还能深入了解其内部实现,提升数据库操作的技巧和优化能力。同时,添加注释的过程也是深化理解的好方法,有助于在实际项目中更高效地应用iBATIS框架。

    IBatis简单使用

    以上就是IBatis的基本使用方法和核心概念,通过它可以有效地提升数据库操作的便捷性和灵活性,降低开发成本。在实际项目中,可以根据需求进行扩展和定制,如结合Spring框架实现更高级的整合应用。

    ibatis教程,ibatis帮助文档

    2. 执行映射的Statement,iBATIS框架创建PreparedStatement,使用参数对象,执行SQL并从结果集中构建返回对象。 3. 返回结果,如果是更新操作,返回受影响的行数;如果是查询,返回单个对象或对象集合。 五、基础...

Global site tag (gtag.js) - Google Analytics