`
wanxiaotao12
  • 浏览: 473782 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IBATIS Iterate用法——一些疑惑

 
阅读更多

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

 

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

 

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

 

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

 

配置的sqlMap如下:

 

Xml代码
	<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

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

SQLMap :

 

Xml代码
	<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”。

分享到:
评论

相关推荐

    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语句中动态生成参数列表,这对于批量操作(如批量插入、更新或删除)尤为重要。该标签支持多种...

    MyEclipse上自动生成dao和实体的插件——ibatis

    在MyEclipse中,有专门为Ibatis设计的插件——Ibator,可以帮助开发者快速生成DAO和实体类,极大地简化了开发流程。 Ibator,全称为"Ibatis Auto Generator for Eclipse",是Ibatis官方提供的一个扩展,它可以在...

    ibatis —— docs.zip

    MyBatis生成器(MBG)是MyBatis MyBatis 和iBATIS的代码生成器。它将为MyBatis的所有版本以及版本2.2.0之后的iBATIS生成代码。它将内省一个数据库表(或多个表),并将生成可用于访问表的工件。这减轻了设置对象和...

    ibatis入门与ibatis迭代的用法

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

    ibatis教程,ibatis帮助文档

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

    ibatis的使用教程

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

    ibatis批量处理

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

    ibatis学习完整实例,例子

    《全面解析Ibatis实战教程——基于ibatistest2项目》 Ibatis,作为一个轻量级的持久层框架,以其灵活、易用的特点在Java开发领域广泛应用。本教程旨在通过一个完整的实例——"ibatistest2"项目,帮助开发者深入理解...

    Spring MVC Ibatis Bean 根据mysql数据表——代码生成工具

    标题中的“Spring MVC Ibatis Bean 根据mysql数据表——代码生成工具”就是这样的一个工具,它能够根据MySQL数据库中的表结构,快速生成符合Spring MVC和Ibatis框架的代码。 Rapid-generator-0.2v可能是这个工具的...

    iBATIS缓存的使用方法

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

    ibatis总结 ibatis ibatis ibatis ibatis

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

    IBatis.Net使用方法

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

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

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

    ibatis demo,ibatis例子,ibatis示例

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

    ibatis 开发指南 和 iBATIS-SqlMaps两本图书

    6. **API使用**:介绍SqlSession、SqlSessionFactory、Executor等关键接口和类的使用方法。 7. **缓存机制**:解释iBATIS的缓存策略,包括本地缓存和二级缓存,以及如何自定义缓存实现。 8. **事务管理**:讨论...

    ibatis

    标题 "ibatis" 提到的是一个著名的开源Java持久层框架——iBATIS,它在过去的Web应用程序开发中占据了重要地位。iBATIS 提供了一种将SQL查询与Java代码分离的方法,增强了数据库操作的灵活性和可维护性。"ibatis in ...

Global site tag (gtag.js) - Google Analytics