用迭代来实现,用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处理数组参数时,需要注意以下几点: - 数组中的元素类型应当与数据库中对应的字段类型相匹配。 - 使用`<iterate>`标签时,确保正确设置其属性,以生成正确的SQL语法。 - 数组为空时,`<iterate>`标签...
### ibatis中输入输出各种类型的参数分析及#与$区别 #### iBatis简介与特点 iBatis作为一款轻量级的Java持久层框架,以其简洁、灵活的特点,在众多框架中占据一席之地。相较于知名的Hibernate框架,iBatis在实现上...
最后,当参数只包含一个数组时,iBATIS同样提供了相应的SQL构造机制。例如,在`<select>`标签中,通过`<dynamic prepend="where module">`可以构建带有条件的SQL查询语句,其中的`prepend`属性用于指定条件语句的...
在iBatis中,输入参数也可以只包含一个数组类型。例如: ```xml select moduleId, actionId from StatMemberAction moduleId = #moduleId# ``` 上面的语句将查询`StatMemberAction`表中满足条件的记录,...
5. **参数映射**:Ibatis支持多种类型的参数映射,包括简单的值、复杂对象、数组和集合。它能够自动将.NET对象的属性映射到SQL语句的参数。 6. **结果集映射**:Ibatis可以根据预先定义的结果集映射规则,自动将...
iBatis支持多种类型的SQL参数,包括基本类型(如int、String等)和复杂类型(如Java对象)。在SQL映射文件中,可以通过`<parameterMap>`和`<resultMap>`来定义参数映射规则,确保参数能够正确传递到SQL语句中。 ###...
- `<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,将参数名作为...
- **编写Mapper XML文件**:对于每个Mapper接口,都需要一个XML文件来定义具体的SQL语句以及参数和返回结果的映射规则。 ##### 3. ibatis配置 - **配置文件**:创建`mybatis-config.xml`文件,用于配置数据源、...
IBatis 支持批量插入和更新,通过在 SQL 语句中使用 `foreach` 标签,可以方便地处理数组或集合数据。例如,批量插入用户: ```xml INSERT INTO users(name, email) ;"> (#{item.name}, #{item.email}) ``` ...
总结起来,Mybatis调用PostgreSQL存储过程并处理数组参数的关键步骤包括: 1. 在PostgreSQL中创建带有数组参数的存储过程。 2. 自定义一个TypeHandler,实现对数组类型的转换。 3. 在Mybatis的Mapper XML中配置`...
(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,...