mybatis 呼叫 oracle 返回結果集 儲存過程
轉:http://hi.baidu.com/jy4214/blog/item/192ad99004b09992a877a464.html
執行環境
struts2+spring3.0+mybatis
Mapper配置
<select id="getSiteBySiteName" statementType="CALLABLE">
{call Q_SITE_TEST(
#{BelongsToNetwork,jdbcType=VARCHAR,mode=IN},
#{rf,jdbcType=CURSOR,mode=OUT,resultMap=Q_SITE_TEST_MAP,javaType=java.sql.ResultSet})}
</select>
<resultMap type="com.bee.pojo.TestSite" id="Q_SITE_TEST_MAP">
<result column="SITENAME" jdbcType="DECIMAL" property="sitename" />
<result column="SITENO" jdbcType="VARCHAR" property="siteno" />
</resultMap>
action呼叫
public String getSiteDetail(){
Map<String ,Object> map=new HashMap<String, Object>();
map.put("BelongsToNetwork", "華南中心");
iservice.getSiteBySiteName(map);
List siteList=(List)map.get("rf");
req().setAttribute("siteList", siteList);
System.out.println(siteList.size());
return this.SUCCESS;
}
儲存過程
create or replace procedure Q_Site_test(BelongsToNetwork in varchar2,rf out sys_refcursor) is
--根據所屬網點查詢下級網點資料
--引數說明
--BelongsToNetwork:所屬網點
begin
open rf for
select siteno, sitename from tab_sitelist t where belognsite=BelongsToNetwork;
end Q_Site_test;
注意這裡好像不能使用parameterMap,以下這種配置方式會報錯
<select id="getSiteBySiteName" statementType="CALLABLE" parameterMap="paramMap">
{call Q_SITE_TEST(
#{BelongsToNetwork},
#{rf})}
</select>
<parameterMap type="java.util.HashMap" id="paramMap" >
<parameter property="BelongsToNetwork" javaType="String" jdbcType="VARCHAR"/>
<parameter property="rf" jdbcType="CURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="Q_SITE_TEST_MAP" />
</parameterMap>