用迭代来实现,用parameterClass 来接收然后通过<iterate>遍历整个集合
Iterate的属性:
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 类型为java.util.List的用于遍历的元素(必选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close -整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction - 每次遍历内容之间的字符串,用于定义AND或OR(可选)
<iterate> 遍 历类型为java.util.List的元素。
注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,以防解析器简单地将 List输出成String。
(#) 使用的是PreparedStatement 机制,生成的SQL字符串中含有很多?,这些?会被动态的添加参数进去查询
($) 中的变量好比字符串直接替换。
<select id="selectLanNamesByIds" parameterClass="list" resultClass="String">
select lan.LANGUAGE_NAME from E2EXLATION.LANGUAGE lan
where lan.LANGUAGE_ID in
<iterate open="(" close=")" conjunction=",">#idList[]#</iterate>
</select>
public String getLanguageNamesByIds(String languageIds) throws SQLException {
Map params = new HashMap();
String returnVal = "";
if (languageIds != null && languageIds.trim().length() != 0) {
List idList = new ArrayList();
String[] ids = languageIds.split(",");
for (int i = 0; i < ids.length; i++){
idList.add(ids[i]);
}
List names = sqlMapper.queryForList("selectLanNamesByIds", idList);
returnVal = convertListToString(names);
}
return returnVal;
}
分享到:
相关推荐
以下是对Ibatis中传入数组作为查询条件的几种方法的详细解释: 1. **传入参数仅有数组**: 在这种情况下,`<iterate>`标签用于构建SQL的`IN`子句。`open`属性定义了`IN`子句的开始括号,`close`属性定义了结束括号...
对于数组,可以实现`org.apache.ibatis.type.TypeHandler`接口或继承`org.apache.ibatis.type.BaseTypeHandler`,然后映射到对应的JDBC类型。尽管Mybatis提供了一个默认的ArrayTypeHandler,但可能无法直接处理...
foreach标签是Ibatis中用于处理数组或集合的标签,它的作用类似于Java的for-each循环,常用于动态构建SQL语句。基本语法如下: ```xml (" separator="," close=")"> #{item} ``` 在这里,`collection`是需要遍历的...
- `<dynamic>`标签用于动态生成SQL语句的部分,它允许根据传入参数的值来决定是否包含某个条件。例如,`<isNotEmpty>`标签用于检查参数是否为空,如果非空,则将包含其后的SQL片段。 2. **子查询**: - 在这个...
以前曾经用过ibatis,这是mybatis的前身,当时在做项目时,感觉很不错,比hibernate灵活。性能也比hibernate好。而且也比较轻量级,因为当时在项目中,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经...
MyBatis/IBatis 中 # 和 $ 的区别 - `#` 将传入的数据都当作一个字符串,并自动添加双引号,如 `order by #user_id#`,如果传入的值是 111,则SQL语句为 `order by '111'`。 - `$` 将传入的数据直接拼接到SQL中,如...
在处理需要传入集合参数的情况时,我们需要使用`setArray()`方法,将Java集合转换为数据库兼容的数组类型。 参考文档"E3Tree参考手册[1.5].doc"很可能详细介绍了"e3tree"存储过程的使用方法、参数说明、示例和最佳...
- **构造器注入**:需要提供一个构造器,Spring在创建bean时会调用此构造器,将依赖的bean以参数的形式传入。 - **setter方法注入**:通过提供一个setter方法,Spring会在创建完bean之后,调用这些setter方法来设置...