为什么 mapibatis 返回map

ibatis使用心得——返回Map的Map
一般而言,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
这里显式指定了一个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中的定义,实际对应于itemname和itemvalue字段。也可以定义key为某个字段,而value为整个HashMap对象(或者JavaBean对象):
getSqlMapClientTemplate().queryForMap(\”getItems\”, null, \”itemName\”);
此外,sql map还有提供一种隐式的resultMap(详见reference),但是经过试验,这种隐式resultMap在返回HashMap Map的时候,并没有得到正确结果,但显式的resultMap声明是没有问题的。
此条目发表在
分类目录。将加入收藏夹。为什么 map 返回_百度知道
为什么 map 返回
,键和值的数据类型是任意的,第二问号表示“值”的数据类型?&gt, Object&S
/根据键Name返回对应的值
有关哈希对象的深度理解;);
&#47、Hashtable)的对象都是基于“键-值”对的形式来存取对象的;();Name&quot,键为String型;String:
Map&Name&quotMap是一个接口对象;,值为Object型
hash, &中的两个问号是理解哈希对象的关键点;&#47:第一个问号表示“键”的数据类型;取元素
Object obj =).put(&quot.get(&接口对象用子类实例化。所有实现Map接口的类(也就两个,可以参考数据结构中“哈希表”的知识,另一个实现Map接口的类是Hashtable(也是哈希对象类); hash= new HashMap&lt, Object&gt:HashM张三其&&#47。
Map&lt,HashMap是实现了该接口的哈希对象类?,;
其他类似问题
为您推荐:
其他1条回答
描述详细点呢
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁为什么 map 返回_百度知道
为什么 map 返回
开发中经常会用到在Java中.} Map是Java中的一个键值对接口,只需要指定方法的返回类型为Map即可..: public Map doSomething(){。 具体实现如下,定义方法返回Map跟返回其他类型一样,允许以键集。Map接口提供三种collection 视图
为您提供更好的产品和服务
主营:七彩虹品牌主板,显卡等电脑及配件产品
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁ibatIS中返回结果map 并使用list获取
- MOVING的笔记本 - ITeye技术网站
博客分类:
ibatis作为一个轻量级的orm工具现在非常流行,我在使用中发现,有时仅仅希望返回一个类型为map的list就可以了,
比如简单的查询统计之类的,没有必要定义太多的pojo,因此想能不能在ibatis中直接传入sql语句来执行,然后返回map呢?
从网上搜了一下, 还真有,实验成功后总结一下,大家共同进步。
其实很简单,就是在配置文件中添加以下的配置,
&!-- 测试Sql --&
& &select id="sqlQuery" parameterClass="java.lang.String" resultClass="java.util.HashMap" remapResults="true"&
&&& &![CDATA[
&&& $sql$
&&& ]]&
& &/select&
&select id="getMapList" remapResults="true" resultClass="java.util.HashMap" &
& &![CDATA[
&& select ID,USERNAME,PASSWORD,CREATETIME from Account
& ]]&
注意以上配置中的 remapResults="true",之前就因为没有加这个参数,导致使用不的sql查询时出错的问题。
使用方法就更简单了,拼好sql语句后,调用
sqlMapper.queryForList("sqlQuery", sql)就得到了查询结果,
当然这个结果为List,并且list中的元素为Map类型,循环List,就得到查询明细。
以上方法对 于分类汇总类的查询统计功能尤其实用。如果只是count()的话,就取List的第一个元素就行了。
我们可以把这个方法抽出来写到一个util类中,方法如下
&&
public static List queryForList(String sql){
&&&&&&& List rtn =
&&&&&&& try{
&&&&&&&&&&& rtn = sqlMapper.queryForList("sqlQuery", sql);
&&&&&&& }catch(SQLException sqle){
&&&&&&&&&&& sqle.printStackTrace();
&&&&&&& }
&&&&&&&
&&& }
@SuppressWarnings("unchecked")
public List&?& getMapList() {
& List&?& list = new ArrayList();
& try {
&& list = getSqlMapClientTemplate().queryForList(namespace + ".getMapList");
& } catch (Exception e) {
&& System.out.println(namespace + ".getMapList()异常!"
&& + e.getMessage());
& }
&
&& 这样用的用法省去很多代码,不需要在声明实体类,直接使用map作为实体类来看,大家可以试试看
浏览: 330316 次
来自: 南京
谢谢,需要这篇文章太久了
感谢分享,有没有一种方式可以,即保证模块互相独立,又能解决相互 ...
很有用,已成功,谢谢
其实当时不明白的话你当时就应该想到:这些写服务器代码的人都是久 ...
人家用复杂的session id生成策略并不是为了防止重复,而 ...LinkedHashMap.getOrDefault
Object getOrDefault(Object key, Object defaultValue)
返回map键对应的map值,如果不存在map键,返回默认值
参数defaultValue-默认值key-map键
返回值map键对应的map值,如果不存在map键,返回默认值LinkedHashMap_getOrDefault.javapackage&net.import&java.util.LinkedHashM&&public&class&LinkedHashMap_getOrDefault{&&&&public&static&void&main(String[]&args)&throws&Exception&{&&&&&&&&LinkedHashMap&String,&Integer&&langs&=&new&LinkedHashMap&String,&Integer&();&&&&&&&&langs.put("Java",&8);&&&&&&&&langs.put("Csharp",&5);&&&&&&&&Integer&version&=&langs.getOrDefault("Python",&3);&&&&&&&&System.out.println("version&:&"&+&version);&&&&}}
相关1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

我要回帖

更多关于 hibernate 返回map 的文章

 

随机推荐