用迭代来实现,用parameterClass 来接收然后通过<iterate>遍历整个集合
Iterate的属性:
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 类型为java.util.List的用于遍历的元素(必选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close -整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction - 每次遍历内容之间的字符串,用于定义AND或OR(可选)
<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; }
分享到:
相关推荐
Java@Spring Boot@iBatis数组in查询的实现方法 在本文中,我们将详细介绍Java@Spring Boot@iBatis数组in查询的实现方法。这种查询方法在实际开发中非常有用,特别是在需要从数组中查询符合条件的集合时。 首先,让...
这里的`collection="ids"`指定了参数数组的名字,`item="item"`是循环中的当前元素变量,`index="index"`是元素的索引,`open="("`和`close=")"`分别表示遍历开始和结束的字符。 接下来,关于EasyUI Tree,这是一个...
在iBatis中,输入参数也可以只包含一个数组类型。例如: ```xml select moduleId, actionId from StatMemberAction moduleId = #moduleId# ``` 上面的语句将查询`StatMemberAction`表中满足条件的记录,...
5. **参数映射**:Ibatis支持多种类型的参数映射,包括简单的值、复杂对象、数组和集合。它能够自动将.NET对象的属性映射到SQL语句的参数。 6. **结果集映射**:Ibatis可以根据预先定义的结果集映射规则,自动将...
- `<iterate>`用于处理数组或集合类型的参数,如`dismissStatusList`,它可以生成逗号分隔的条件,如`m.DISMISS_STATUS in ( ... )`。 总结起来,这个Ibatis查询语句充分展示了Ibatis处理复杂查询的能力,包括动态...
foreach标签是Ibatis中用于处理数组或集合的标签,它的作用类似于Java的for-each循环,常用于动态构建SQL语句。基本语法如下: ```xml (" separator="," close=")"> #{item} ``` 在这里,`collection`是需要遍历的...
在iBatis配置文件中,使用`<iterate>`标签遍历`appDevIds`数组,形成IN条件语句。 **2.2 情况二:多个输入参数循环次数是对称的** 当输入参数的循环次数与操作的次数相匹配时,可以创建一个HashMap,将参数名作为...
IBatis 支持批量插入和更新,通过在 SQL 语句中使用 `foreach` 标签,可以方便地处理数组或集合数据。例如,批量插入用户: ```xml INSERT INTO users(name, email) ;"> (#{item.name}, #{item.email}) ``` ...
(1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...
(1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...
(1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...
(1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...
(1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...
4. ****标签: 用于处理列表或数组,如IN语句的参数。例如,根据用户ID列表筛选用户。 ```xml (" separator="," close=")"> #{item} ``` 生成的SQL类似:`WHERE id IN (1, 2, 3)` 5. ****标签: 用于去除SQL语句的...
(1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...
8. **iBatis与JSON**:在iBatis中,理解如何使用JSON转换工具处理动态SQL的参数和返回结果,以及如何配置映射文件来支持JSON数据。 综上所述,"json转换工具"与iBatis的结合使用涉及到了多个层次的IT知识,包括JSON...
6. **参数映射**:MyBatis 支持 Map, POJO 类型,甚至基于索引的数组参数,通过 `#{}` 进行参数绑定,保证了 SQL 注入的安全性。 7. **结果映射**:通过 `<resultMap>` 定义字段与类属性的映射关系,可以处理一对一...
这份文档可能详细介绍了如何编写和运行JUnit测试用例,包括断言的使用、测试注解、测试套件、参数化测试以及模拟对象的概念,有助于开发者实践TDD(测试驱动开发)和持续集成。 4. **java学习笔记上.pdf**:同下册...
1. **对象导航**:OGNL允许通过点号`.`或索引`[]`操作符来访问对象的属性或数组元素。例如,`user.name`可以获取`user`对象的`name`属性,而`list[0]`则访问列表的第一个元素。 2. **表达式计算**:OGNL支持数学...