嗨,这可能是一个基本的问题,但我对Ibatis还不熟悉。queryForList将返回哪些对象的列表?通常,对于queryForObject,我们定义了一个resultMap,但是没有为queryForList定义这样的映射。
提前谢谢。
发布于 2011-03-03 23:55:07
您只需为查询定义一个resultMap,而不管它应该返回多少行。如果调用queryforObject(),那么iBatis将假定查询只返回一行。如果我没记错的话,如果它返回更多的行,就会抛出异常。如果调用queryForList(),那么iBatis将假定query可以返回多行。在这两种情况下,对于返回的每一行,iBatis都将基于resultMap进行转换,因此您可以将resultMap看作是如何将单行转换为单个对象的秘诀。
发布于 2011-03-04 00:01:01
假设您的映射XML中有以下配置:
<select id="getFoo" resultClass="java.util.HashMap">
select acctNbr, name, address
from addressfile
order by name
</select>然后,您可以使用queryForList以列表形式检索结果集并迭代其条目,如下所示:
List<Map<String,Object>> results = (List<Map<String,Object>>) sqlMap.queryForList("getFoo");
for (Map<String,Object> entry : results) {
String acctNbr = entry.get("acctNbr");
String name = entry.get("name");
String address = entry.get("address");
System.out.println(acctNbr + " : " + name + " : " + address + "\n");
}发布于 2015-02-16 15:14:35
queryForList也可以使用resultMap作为列表的项目。我们假设您有以下sql-map文件。
<resultMap class="me.skpark.bean.CustomBean" id="custombean">
<result property="v1" column="VALUE1" />
<result property="v2" column="VALUE2" />
<result property="v3" column="VALUE3" />
</resultMap>
<select id="select2" parameterClass="java.util.HashMap" resultMap="custombean" >
select VALUE1, VALUE2, VALUE3from system_control_m
</select>您可以使用List作为接收数据。
HashMap<String, String> params = new HashMap<String, String>();
params.put("name", "park");
List<CustomBean> list = sqlMap.queryForList("select2", params);https://stackoverflow.com/questions/5182307
复制相似问题