mybatis 呼叫oracle儲存過程,傳參、返回遊標的值獲取--示例
阿新 • • 發佈:2018-12-31
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>