Ibatis中parameterMap和MAP类型的Result的应用

当我们在用ibatis作为OR对象关系映射时,有时总会用到paramterMap标签,因为有时我们没有必要创建一个新的对象。 
        那我们究竟怎么用这个标签呢?下面给出具体事例。 
1.在java类中: 
  // Map中放入name,id对应的值 
            Map<String, Object> paramMap = new HashMap<String, Object>(); 
            paramMap.put("name",“duqiangcise”); 
            paramMap.put("id", “20081209”); 
    //调用service层,“MyTest"是ibatis配置文件的别名,“updateMsg”是相应<update id="updateMsg”">标签的id 
            service.update(“MyTest.updateMsg”, paramMap); 
  2.  在ibatis配置文件中: 
    <parameterMap id="updateParamMap" class="java.util.Map"> 
<parameter property="name" javaType="String" mode="IN" 
jdbcType="VARCHAR" /> 
<parameter property="id" javaType="String" mode="IN" 
jdbcType="VARCHAR" /> 
</parameterMap> 
在上面我们应该注意的是:在<parameter>标签中的property属性中一定要包含 
传入map的key值,即:要有property=“name” 和property=“id”这样的属性。也就是说,<parameterMap> 
标签中要包含传入map的所有key。 
3.配置具体的数据执行语句: 
<update id="getByMap" parameterMap="updateParamMap"> 
update    mytable  set  name=? and   id=? where key=‘1’ 
</update> 
上面应该注意的是,“?”代表传入的参数,并且第一个“?”对应定义parameterMap时的第一个属性,第二个“?” 
对应定义parameterMap时的第二个属性,依次类推。要小心,千万不要把“?”和相应的属性的对应关系弄错了。 
下一次将介绍,parameterMap在存储过程中的应用方法。 
二:Map类型的Result 
Result Map也可以方便为一个Map(如HashMap或TreeMap)对象赋值。还可以得到Map对象的集合(即Map的List)。Map对象与Java Bean同样的方式映射,只是使用name属性值作为Map的键值,用它来索引相应的数据库字段值,而不是象Java Bean一样给属性赋值。例如,如果您要将Product对象的数据装入Map,可以这样做: 
<resultMap id=”get-product-result” class=”java.util.HashMap”> 
<result property=”id” column=”PRD_ID”/> 
<result property=”code” column=”PRD_CODE”/> 
<result property=”description” column=”PRD_DESCRIPTION”/> 
<result property=”suggestedPrice” column=”PRD_SUGGESTED_PRICE”/> 
</resultMap> 
上面的例子会创建一个HashMap的实例并用Product的数据赋值。Property的name属性值(即“id”)作为HashMap的键值,而列值则作为HashMap中相应的值。 
当然,可以把Map类型Result和隐式的Result Map一起使用。例如: 
<statement id=”getProductCount” resultClass=”java.util.HashMap”> 
select * from PRODUCT 
</statement> 
上面的例子中,结果集将以Map类型返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值