ibatis调用存储过程实例
上次调用存储过程返回游标集合,调试花了些时间,记录下来备忘。
映射文件:
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<!DOCTYPE sqlMap PUBLIC “-//ibatis.apache.org//DTD SQL Map 2.0//EN” “http://www.ibatis.com/dtd/sql-map-2.dtd“>
<sqlMap namespace=”goodsTypeSales”>
<typeAlias alias=”goodsTypeSalesDO” type=”com.hongyue.common.entity.report.GoodsTypeSalesDO”/>
<resultMap id=”get-goodstype-sales-result” >
<result property=”goodsTypeId” column=”goods_type_id”/>
<result property=”sales” column=”sales”/>
<result property=”orderNum” column=”order_num”/>
<result property=”buyers” column=”buyers”/>
<result property=”pricePerBuyer” column=”price_per_buyer”/>
<result property=”orderConversionRate” column=”order_conversion_rate”/>
<result property=”grossMargin” column=”gross_margin”/>
</resultMap>
<parameterMap id=”param” class=”java.util.Map”>
<parameter property=”goodstype” jdbcType=”VARCHAR2″ javaType=”java.lang.String” mode=”IN”/>
<parameter property=”startdate” jdbcType=”VARCHAR2″ javaType=”java.lang.String” mode=”IN”/>
<parameter property=”enddate” jdbcType=”VARCHAR2″ javaType=”java.lang.String” mode=”IN”/>
<parameter property=”verify” jdbcType=”NUMBER” javaType=”java.lang.Integer” mode=”IN”/>
<parameter property=”result” jdbcType=”ORACLECURSOR” javaType=”java.sql.ResultSet” mode=”OUT” resultMap=”get-goodstype-sales-result”/>
</parameterMap>
<procedure id=”IbatisGoodsTypeSalesDAO.getGoodsTypeSales” parameterMap=”param” >
{call RP_ORDER_STATISTICS(?,?,?,?,?)}
</procedure>
</sqlMap>
在DAO中:
public List<GoodsTypeSalesDO> getGoodsTypeSales(HashMap paramMap) {
queryForList(“IbatisGoodsTypeSalesDAO.getGoodsTypeSales”,paramMap);
List<GoodsTypeSalesDO> arrayList = (ArrayList)paramMap.get(“result”);//取值 array
System.out.println(arrayList.size());
return arrayList;
}
在Action中组织参数的HashMap
HashMap paramMap = new HashMap();
paramMap.put(“goodstype”, goodsTypeId);
paramMap.put(“startdate”, startDate);
paramMap.put(“enddate”, endDate);
paramMap.put(“verify”, verify);
paramMap.put(“result”, “”);
gtsList = goodsTypeSalesService.getGoodsTypeSales(paramMap);