【Ibatis】(十一)、java.util.Map作为parameterClass和resultClass

1.Map作为parameterClass

映射文件:

Xml代码 收藏代码
  1. <!--useMaptypeasparameterClass-->
  2. <selectid="getProduct-Map"parameterClass="java.util.Map"resultMap="get-product-result">
  3. <![CDATA[
  4. select*fromt_product
  5. whereprd_id=#id#andprd_description=#description#
  6. ]]>
  7. </select>

DAO层:

Java代码 收藏代码
  1. /**
  2. *java.util.Map作为parameterClass
  3. */
  4. publicProductgetProductMap(Mapmap)throwsSQLException{
  5. init();
  6. Productproduct=(Product)sqlMapClient.queryForObject("getProduct-Map",map);
  7. returnproduct;
  8. }

Test类:

Java代码 收藏代码
  1. publicvoidgetProductMap()throwsSQLException{
  2. Mapmap=newHashMap();
  3. map.put("id",newInteger(1));
  4. map.put("description","basketball");
  5. Productproduct=productDao.getProductMap(map);
  6. System.out.println(product);
  7. }

结果:

id:1
description:basketball
price206.99

2.Map作为resultClass

映射文件:

Xml代码 收藏代码
  1. <resultMapid="get-product-map"class="java.util.HashMap">
  2. <resultproperty="id"column="prd_id"/>
  3. <resultproperty="description"column="prd_description"/>
  4. <resultproperty="price"column="prd_price"/>
  5. </resultMap>
  6. <!--STARTuseMaptypeasresultClass,MUSTusejava.util.HashMapinsteadjava.util.Map-->
  7. <selectid="getProdcut-MapResult"resultClass="<spanstyle="color:#ff0000;">java.util.HashMap</span>
  8. ">
  9. <![CDATA[
  10. select*fromt_product
  11. ]]>
  12. </select>
  13. <selectid="getProductUseMap-resultMap"resultMap="get-product-map">
  14. <![CDATA[
  15. select*fromt_product
  16. ]]>
  17. </select>
  18. <!--END-->

DAO层:

Java代码 收藏代码
  1. /**
  2. *java.util.Map作为resultClass
  3. */
  4. publicListgetProductMapResult()throwsSQLException{
  5. init();
  6. Listlist=sqlMapClient.queryForList("getProdcut-MapResult");
  7. returnlist;
  8. }
  9. publicListgetProductUseMapByResultMap()throwsSQLException{
  10. init();
  11. Listlist=sqlMapClient.queryForList("getProductUseMap-resultMap");
  12. returnlist;
  13. }

Test类:

Java代码 收藏代码
  1. publicvoidgetProductMapResult()throwsSQLException{
  2. Mapmap=null;
  3. Listlist=productDao.getProductMapResult();
  4. for(Iteratorit=list.iterator();it.hasNext();){
  5. //List里存放的是java.util.Map类型
  6. Objectobj=(Object)it.next();
  7. System.out.println(obj.getClass());
  8. System.out.println(obj);
  9. }
  10. }
  11. publicvoidgetProductUseMapByResultMap()throwsSQLException{
  12. Mapmap=null;
  13. Listlist=productDao.getProductUseMapByResultMap();
  14. for(Iteratorit=list.iterator();it.hasNext();){
  15. //List里存放的是java.util.Map类型
  16. Objectobj=(Object)it.next();
  17. System.out.println(obj.getClass());
  18. System.out.println(obj);
  19. }
  20. }

结果:

class java.util.HashMap
{prd_id=1, prd_price=206.99, prd_description=basketball}
class java.util.HashMap
{prd_id=2, prd_price=106.99, prd_description=football}
class java.util.HashMap
{price=206.99, description=basketball, id=1}
class java.util.HashMap
{price=106.99, description=football, id=2}

注意:Map作为resultClass时,必须指定具体的实现类,比如java.util.HashMap,否则会报错

Caused by: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate result class. Cause: java.lang.InstantiationException: java.util.Map

你可能感兴趣的:(parameter)