`
点虫虫
  • 浏览: 18105 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ibatis 参数为数组

阅读更多

<!-- 快速插入Demo -->
	<insert id="sendMailFast" parameterClass="java.util.ArrayList">
		insert into mail(sender,reciver,content,type,flag,sendTime,endTime,goodId,msType,msNum) values
		<iterate conjunction=",">
		(#value[].sender#,#value[].reciver#,#value[].content#,#value[].type#,#value[].flag#,#value[].sendTime#,#value[].endTime#,#value[].goodId#,#value[].msType#,#value[].msNum#)
		</iterate>
	</insert>

	<!-- 删除指定邮件 -->
	<delete id="deleteMail" parameterClass="java.util.ArrayList">
		delete from mail where id in
		<iterate conjunction="," open="(" close=")">
			#value[]#
		</iterate>
	</delete>

 这个写法验证无错,但是还是不太明白这个#value[]#,有时上网说是要写成这样:

ibatis 数组参数
2010-05-02 13:31

用迭代来实现,用parameterClass 来接收然后通过<iterate>整个集合

Iterate的属性:
prepend 
 可被覆盖的SQL成部分,添加在句的前面(可
property 
 java.util.List的用于遍的元素(必
open 
 整个遍内容体始的字符串,用于定括号(可
close 
-整个遍内容体束的字符串,用于定括号(可
conjunction 
 次遍内容之的字符串,用于定ANDOR(可
<iterate>
  历类java.util.List的元素。

例子: 

User.xml

<select id="getUser" parameterClass="java.util.Map" resultClass="userModel">

<![CDATA[ select * from userinfo WHERE (userid in

]]>

  <iterate property="personList" open="(" close=")" conjunction=",">

    #personList[].userId#

<!--$personList[].userId$-->

           </iterate>

<![CDATA[

)

]]>

</select>

注意:使用<iterate>,在List元素名后面包括方括号[]非常重要,方括号[]标记为List,以防解析器简单地将 List出成String

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

($) 中的量好比字符串直接替

Dao.java

public UserModel getUser(UserModel userModel) throws SQLException {                      

Map<String, Object> map = new HashMap<String, Object>();

List<UserModel> list = new ArrayList<UserModel>();

UserModel userModel1 = new UserModel();

userModel1.setUserId("1");

list.add(userModel1);

UserModel userModel2 = new UserModel();

userModel2.setUserId("lsw");                                 

list.add(userModel2);    

map.put("personList", list);

List sqlUserModelList = getSqlMapClientTemplate().queryForList("getUser", map);

UserModel sqlUserModel = new UserModel();                     

return sqlUserModel;    }

分享到:
评论

相关推荐

    ibatis 处理数组

    这里的`collection="ids"`指定了参数数组的名字,`item="item"`是循环中的当前元素变量,`index="index"`是元素的索引,`open="("`和`close=")"`分别表示遍历开始和结束的字符。 接下来,关于EasyUI Tree,这是一个...

    java~springboot~ibatis数组in查询的实现方法

    Java@Spring Boot@iBatis数组in查询的实现方法 在本文中,我们将详细介绍Java@Spring Boot@iBatis数组in查询的实现方法。这种查询方法在实际开发中非常有用,特别是在需要从数组中查询符合条件的集合时。 首先,让...

    ibatis中输入输出各种类型的参数分析及#与$区别

    ### ibatis中输入输出各种类型的参数分析及#与$区别 #### iBatis简介与特点 iBatis作为一款轻量级的Java持久层框架,以其简洁、灵活的特点,在众多框架中占据一席之地。相较于知名的Hibernate框架,iBatis在实现上...

    ibatis常用sql语句

    同时,为了避免数组为空或为null时引发的SQL语法错误,iBATIS还提供了`&lt;isNotNull&gt;`和`&lt;dynamic&gt;`标签进行条件判断,确保了代码的健壮性和安全性。 ### 传递参数只含有一个数组 最后,当参数只包含一个数组时,...

    ibatis学习文档

    例如,如果你的ID数组为`[1, 2, 3]`,生成的SQL将会是`SELECT * FROM tb WHERE ID IN (1, 2, 3)`。 2. **传入参数有数组,且有其他数据**: 这种情况适用于数组和其他非数组参数同时存在的场景。`parameterClass`...

    ibatis16个常用sql语句

    在iBatis中,输入参数也可以只包含一个数组类型。例如: ```xml select moduleId, actionId from StatMemberAction moduleId = #moduleId# ``` 上面的语句将查询`StatMemberAction`表中满足条件的记录,...

    ibatis批处理

    在iBatis配置文件中,使用`&lt;iterate&gt;`标签遍历`appDevIds`数组,形成IN条件语句。 **2.2 情况二:多个输入参数循环次数是对称的** 当输入参数的循环次数与操作的次数相匹配时,可以创建一个HashMap,将参数名作为...

    ibatis批量存储

    foreach标签是Ibatis中用于处理数组或集合的标签,它的作用类似于Java的for-each循环,常用于动态构建SQL语句。基本语法如下: ```xml (" separator="," close=")"&gt; #{item} ``` 在这里,`collection`是需要遍历的...

    ibatis for .net

    5. **参数映射**:Ibatis支持多种类型的参数映射,包括简单的值、复杂对象、数组和集合。它能够自动将.NET对象的属性映射到SQL语句的参数。 6. **结果集映射**:Ibatis可以根据预先定义的结果集映射规则,自动将...

    Ibatis复杂查询语句.doc

    例如,`&lt;isNotEmpty&gt;`标签用于检查参数是否为空,如果非空,则将包含其后的SQL片段。 2. **子查询**: - 在这个查询中,有多个子查询用于获取特定的ID集合。例如,从`MEMBER_GROUP`表中筛选出符合特定条件的`GROUP...

    ibatis技术总结

    以上接口方法为iBatis提供了强大的查询能力,开发者可以根据实际需求灵活选择合适的调用方式。 #### 5. SqlMapConfig标签详解 `SqlMapConfig`是iBatis的核心配置文件,用于定义全局设置、数据源、事务管理等。以下...

    Mybatis调用PostgreSQL存储过程实现数组入参传递

    对于数组,可以实现`org.apache.ibatis.type.TypeHandler`接口或继承`org.apache.ibatis.type.BaseTypeHandler`,然后映射到对应的JDBC类型。尽管Mybatis提供了一个默认的ArrayTypeHandler,但可能无法直接处理...

    IBatis案例

    IBatis(现为 MyBatis)是由 Clinton Begin 创建的一个开源项目,最初是为了解决 JDBC 的繁琐和易错问题。它的核心理念是将 SQL 查询和 Java 代码分离,通过 XML 或注解来定义 SQL 映射,实现数据访问层的定制化操作...

    springmybatis

    其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...

    Hitis-src-1.0.jar

    (1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...

    Hitis V1.2.2

    (1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...

    Hitis V1.1

    (1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...

    Hitis V1.2.1

    (1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...

Global site tag (gtag.js) - Google Analytics