小结一下ibatis框架下,传入参数为数组类型或者是List类型的sql写法。标签里面都不需要表名
1.传入字符串数组,不需要标明parameterClasss,数组和List类型对象一样都可以用<iterate>标签进行遍历。
1
2
3
4
5
6
7
8
9
10
|
< select id= "selectOrgIdByNameStr" resultClass= "Integer" >
SELECT id
FROM org
WHERE name IN
<iterate close = ")" open = "(" conjunction= "," >
<![CDATA[
#[]#
]]>
</iterate>
</ select >
|
java调用代码(注意空指针问题):
1
2
3
4
|
@Override public List< Integer > selectOrgIdByNameStr(String[] orgArchArr) {
return baseDao.queryForList( "org.selectOrgIdByNameStr" , orgArchArr, Integer .class);
}
|
2.传入List<Integer>,这个时候parameterClass传的是List接口的类路径,而不是List的泛型参数的类路径!
1
2
3
4
5
6
7
8
9
10
|
< select id= "searchWaiters" parameterClass= "java.util.List" resultClass= "com.chat.domain.zone.WaiterCgExt" >
SELECT w.id, pin as userName, org_id as orgId, w. name , erp, job_no as jobNo, level , max_csu, gid,cg. name chatGroupName, r.yn groupYn, cg.yn chatGroupYn
FROM waiter w left join waiter_relation r on w.id = r.wid LEFT JOIN chat_group cg on r.gid = cg.id, org o
WHERE o.id = w.org_id
AND w.yn = 1
AND o.yn = 1
AND w.id IN <iterate open = "(" close = ")" conjunction= "," >
#wid[]#
</iterate>
</ select >
|
java调用代码如下,注意空指针问题。
1
2
3
4
5
6
7
8
|
@Override public List<WaiterCgExt> searchWaiters(ModAccManVo vo) {
List< Integer > widList = baseDao.queryForList( "zone.waiter.searchWaitersId" , vo, Integer .class);
if(CollectionUtils.isEmpty(widList)) {
return new ArrayList<WaiterCgExt>();
}
return baseDao.queryForList( "zone.waiter.searchWaiters" , widList, WaiterCgExt.class);
}
|
3.传入的List的元素是复杂的对象类型,类型类型里面包含id属性。同样,parameterClass传入的是List接口的类路径,而不是List的泛型参数的类路径。遍历的时候,用#list[].id#就行了,“.”后面跟上要枚举的属性名称
1
2
3
4
5
6
7
8
9
|
< select id= "selectWaitersByOrgList" resultClass= "com.chat.domain.zone.Waiter" parameterClass= "java.util.List" >
SELECT id, pin as userName
FROM waiter
WHERE org_id IN
<iterate open = "(" close = ")" conjunction= "," >
#list[].id#
</iterate>
AND yn = 1
</ select >
|
以上代码在本机都正常运行。
相关推荐
在IT行业中,Ibatis是一个非常流行的Java持久层框架,它为开发者提供了灵活的SQL映射...两者结合,能够有效地处理和展示数组类型的数据,提升开发效率。在实际应用中,还需要根据具体业务需求进行适当的调整和优化。
Java@Spring Boot@iBatis数组in查询的实现方法 在本文中,我们将详细介绍Java@Spring Boot@iBatis数组in查询的实现方法。这种查询方法在实际开发中非常有用,特别是在需要从数组中查询符合条件的集合时。 首先,让...
参数可以通过`#{}`语法在SQL语句中引用,ibatis会自动进行类型转换和值绑定。 ### resultMap `resultMap`是ibatis中一个重要的概念,用于描述SQL查询结果与Java对象之间的映射关系。通过`resultMap`可以实现复杂的...
### ibatis中输入输出各种类型的参数分析及#与$区别 #### iBatis简介与特点 iBatis作为一款轻量级的Java持久层框架,以其简洁、灵活的特点,在众多框架中占据一席之地。相较于知名的Hibernate框架,iBatis在实现上...
**Ibatis小结** Ibatis,一款轻量级的Java持久层框架,是MyBatis的前身,由Clinton Begin在2003年创建。它致力于解决Java应用程序中的数据访问层(DAL)问题,提供了SQL映射框架,使得开发者可以直接编写SQL语句,...
1. **传入参数仅有数组**: 在这种情况下,`<iterate>`标签用于构建SQL的`IN`子句。`open`属性定义了`IN`子句的开始括号,`close`属性定义了结束括号,而`conjunction`属性定义了元素间的分隔符,通常是逗号。`#[]#...
6. **结果映射**:返回的结果可以通过ResultMap进行自动映射到Java对象,或者使用resultType或resultMap指定返回类型。 **iBatis迭代的用法** 在处理查询结果时,iBatis提供了迭代的用法,可以方便地遍历查询结果...
在Ibatis中,参数可以通过`#`或`$`符号传递。例如,`select * from PRODUCT where PRD_CAT_ID = #{value}`中的`#{value}`是预编译参数,能有效防止SQL注入。 总结,Ibatis提供了灵活的SQL映射机制,使得开发人员...
在Ibatis中,我们不能直接将枚举类型作为参数传递给SQL语句,因为枚举类在数据库中没有对应的列类型。因此,我们需要创建一个枚举转换器来处理枚举和字符串(或其他数据库可识别的类型)之间的转换。这里我们可以...
2.3 参数绑定:调用 SqlSession 的方法时,传入参数对象或 Map,Ibatis 会自动将参数映射到 SQL 语句中。 2.4 结果处理:查询操作返回的结果会被自动映射到 Java 对象,更新操作返回受影响的行数。 **3. 动态 SQL*...
### ibatis 学习小结笔记 #### 一、ibatis 概述 ibatis 是一个基于 Java 的持久层框架,它提供了一种简便的方式来处理关系型数据库与 Java 对象之间的映射(O/R Mapping)。ibatis 在设计上强调的是 SQL 语句的...
- **Parameter Class**: `java.util.Map`,表示传入参数为Map类型。 - **Result Class**: `java.lang.String`,表示返回结果为字符串类型。 - **SQL语句**: - 表名: `mbs_txn_dtll` - 条件: - 账户号: `l.orig_...
注意,这里的`parameterClass`被设置为`java.util.Map`,这意味着参数对象应为Map类型,其中`list`是Map的一个键,对应的值为List集合。 #### 批量查询 `<select id="selectByIterate" parameterClass="java.util....
在IT行业中,数据库操作是应用程序不可或缺的一部分,而Ibatis作为一款优秀的持久层框架,极大地简化了Java应用与数据库之间的交互。本主题将深入探讨如何在Ibatis中使用存储过程,特别是涉及带有输出参数的存储过程...
### ibatis多参数查询解析 #### 一、引言 在使用ibatis(现称为MyBatis)进行数据库操作时,经常会遇到需要处理多个输入参数的情况。然而,默认情况下ibatis只支持单个输入参数,这在实际开发中往往难以满足需求。...
标题与描述概述的知识点主要集中在iBATIS框架的SQL映射技术上,特别是针对不同类型的输入参数如何在iBATIS中构建SQL语句。以下是对这些知识点的详细展开: ### iBATIS SQL映射技术概览 iBATIS是早期流行的Java持久...
- `property`: 指定要迭代的属性名,这个属性应该对应于传入参数对象的一个字段,该字段通常包含一个集合。 - `open`: 迭代开始时插入的字符,例如括号的开括号。 - `close`: 迭代结束时插入的字符,例如括号的闭...
ibatis 读取oracle clob类型
Ibatis提供了多种方式来实现映射,如自动类型匹配、自定义类型处理器、复杂关联映射等。 7. **缓存机制**:Ibatis内置了本地缓存和二级缓存,可以提高数据读取速度。本地缓存作用于单个SqlSession,而二级缓存则...
- `<iterate>`用于处理数组或集合类型的参数,如`dismissStatusList`,它可以生成逗号分隔的条件,如`m.DISMISS_STATUS in ( ... )`。 总结起来,这个Ibatis查询语句充分展示了Ibatis处理复杂查询的能力,包括动态...