mybatis呼叫儲存過程,獲取返回的遊標
阿新 • • 發佈:2019-01-25
將呼叫儲存過程引數放入map中,由於返回的遊標中包含很多引數,所以再寫一個resultmap與之對應,型別為hashmap。設定返回的jdbcType=CURSOR,resultMap設定為id對應的值。最後遊標中的值就輸出到list中了。程式碼如下:
service層
public HashMap TestProcedure(String id) { HashMap map = new HashMap(); map.put("id", id); map.put("cursor", null); this.testProcedureDao.testProcedure(map); System.out.println(map.get("cursor")); return map; }
dao層
@Mapper
public interface TestProcedureDao{
void testProcedureDao(@Param("map") HashMap map);
}
mapper
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.cms.demo.dao.test1db.TestProcedureDao"> <resultMap type="java.util.HashMap" id="cursorMap"> </resultMap> <!--呼叫儲存過程 --> <select id="testProcedureDao" parameterType="map" statementType="CALLABLE" > call runcrm.p_act_stk_info( #{map.id,mode=IN,jdbcType=INTEGER}, #{map.cursor,mode=OUT,jdbcType=CURSOR,resultMap=cursorMap }) </select> </mapper>
儲存過程返回的resultMap 可以用具體的物件接收,需要宣告每一個欄位以及資料型別;也可以用HashMap來接收,不需要宣告所有的欄位(部分格式如BigDecimal、clob等,需要宣告來轉換格式,否則會報錯)