1. 程式人生 > >mybatis 呼叫oracle儲存過程,傳參、返回遊標的值獲取--示例

mybatis 呼叫oracle儲存過程,傳參、返回遊標的值獲取--示例

1,dao層程式碼

Integer currentlq_fsx = getSqlSession().selectOne("lqMapper.maxscore");
	Map<String,Object> map = new HashMap<String,Object>();
	map.put("fsxxx", fsxxx);
	map.put("currentlq_fsx", currentlq_fsx);
	getSqlSession().selectList("lqMapper.lq", map);//呼叫儲存過程
//呼叫完後,遊標的值存放在map中
	List<Map<String,Object>> list1 = (List<Map<String, Object>>) map.get("v_cursor1");
	List<Map<String,Object>> list2 = (List<Map<String, Object>>) map.get("v_cursor2");
	result.put("list1", list1);
	result.put("list2", list2);


2,mapper.xml程式碼
<select id="lq" statementType="CALLABLE" parameterType="Map">  
<!-- statementType="CALLABLE" 意思是表明是代用儲存過程-->
<![CDATA[ 
{call lq (#{fsxxx,mode=IN,jdbcType=INTEGER}, 
#{currentlq_fsx,mode=IN,jdbcType=INTEGER}, 
#{v_cursor1, mode=OUT, jdbcType=CURSOR, resultMap=cursorMap}, 
#{v_cursor2, mode=OUT, jdbcType=CURSOR, resultMap=cursorMap})} 
]]> 
<!-- 傳入的引數mode值為IN,輸出的引數mode值為OUT-->
</select>