ibatis使用心得——返回Map的Map

来源:互联网 发布:内蒙古广电网络营业厅 编辑:程序博客网 时间:2024/05/16 06:18

来源:http://morningspace.51.net/weblog/?p=143


一般而言,ibatis的sql map是通过JavaBean的属性与数据库表字段的映射来完成一些数据库存取的。而有些场合下,比如数据表本身较为简单,我们并不希望为此单独构造一个JavaBean而“污染”对象系统。此时,我们可以利用Map作为返回结果来代替JavaBean对象。见下面的sql map片段:

<resultMap id=\”getItemsResult\” class=\”java.util.HashMap\”>
<result property=\”itemName\” column=\”item_name\” />
<result property=\”itemValue\” column=\”item_value\” />
</resultMap>
<select id=\”getItems\” resultMap=\”getItemsResult\”>
select item_name, item_value from item_table
</select>

这里显式指定了一个resultMap,利用SqlMapClient的queryForList将会返回一个HashMap List,每个List元素都将是一个Map对象。

有时候,我们并不希望返回的是Object List,而希望返回某种形式的Map。无须更改sql map,我们可以利用SqlMapClient的queryForMap达到这一目的。此时,需要指定Map的key和value,见下面的代码片段:

getSqlMapClientTemplate().queryForMap(\”getItems\”, null, \”itemName\”, \”itemValue\”);

该函数的返回结果将是一个HashMap Map。这里,指定了key和value分别为itemName和itemValue,根据sql map中的定义,实际对应于item_name和item_value字段。也可以定义key为某个字段,而value为整个HashMap对象(或者JavaBean对象):

getSqlMapClientTemplate().queryForMap(\”getItems\”, null, \”itemName\”);

此外,sql map还有提供一种隐式的resultMap(详见reference),但是经过试验,这种隐式resultMap在返回HashMap Map的时候,并没有得到正确结果,但显式的resultMap声明是没有问题的。


原创粉丝点击