返回系統游標集合
示例一:多個參數,手動映射返回字段
第一步:參數配置(入參、出參)
<!-- property屬性指定HashMap的具體鍵,雖然Map是無序的但是存儲過程的入參順序會按照parameter標簽的排列順序執行,mode屬性指定入參或返回值 -->
<parameterMap class="java.util.HashMap" id="SHEHE_ERROR_Map">
<parameter property="FRCODE" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
<parameter property="FORGID" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
<parameter property="START" jdbcType="NUMBER" javaType="java.lang.Integer" mode="IN" />
<!-- 當oracle數據庫參數是number類型時,必須得指定java與oracle數據類型的對應關系 -->
<parameter property="END" jdbcType="NUMBER" javaType="java.lang.Integer" mode="IN" />
<!-- 當oracle數據庫參數是游標時,必須得指定java與oracle數據類型的對應關系 -->
<parameter property="out_cur" javaType="java.sql.ResultSet" jdbcType="ORACLECURSOR" mode="OUT" />
</parameterMap>
第二步:返回值,將返回值封裝到HashMap中
<resultMap class="java.util.HashMap" id="directoryMonitor_out_cursor"> <!-- column代表的是返回的字段,property代表的是HashMap的鍵,指定具體的鍵負責接收 --> <result property="FORGID" column="FORGID"/> <result property="FORGNAME" column="FORGNAME"/> <result property="FCENNAME_TEM_COUNT" column="FCENNAME_TEM_COUNT"/> <result property="ISNULLCENCODE_COUNT" column="ISNULLCENCODE_COUNT"/> <result property="TOTALCOUNT" column="TOTALCOUNT"/> </resultMap>
第三步:調用存儲過程
<!-- ?號的個數須與<parameter>標簽的個數保持一致 --> <procedure id="getSHEHE_ERROR_DATA" parameterMap="SHEHE_ERROR_Map" resultMap="directoryMonitor_out_cursor"> <![CDATA[ {call PRC_DIAITEM_MONITOR(?,?,?,?,?)} ]]> </procedure>
2020/04/18
說明:參數映射parameterMap的步驟不能省略(第一步);
返回值映射可以省略(第二步);
另外,mode的值:IN或者OUT必須大寫;
只有當數據庫的字段是varchar2類型時,可以和java的String類型自動匹配,也就是不用聲明javaType和jdbcType,否則其他數據類型都得指定匹配對象。

不然就會報這個錯。
示例二:只有一個參數,自動映射返回數據
<!-- 指標三級查詢 -->
<!-- ?映射,和?數量保持一致 -->
<parameterMap class="java.util.HashMap" id="indexMap">
<!-- 游標cursor必須聲明屬性javaType和jdbcType,並設置值 -->
<parameter property="OUT_CURSOR" javaType="java.sql.ResultSet" jdbcType="ORACLECURSOR" mode="OUT"/>
</parameterMap>
<!-- parameterMap必須映射,resultMap可以不做映射,直接用resultClass接收返回的數據 -->
<procedure id="getIndexDetail" parameterMap="indexMap" resultClass="java.util.HashMap">
<![CDATA[
{call PRC_INDEX_SEARCH(?)}
]]>
</procedure>
20200616
說明:當只有一個問號?,用於接收存儲過程返回結果時,可以使用resultClass接收,不用映射返回數據,否則,返回的數據都要進行映射!!!
不管是parameterMap還是resultMap,都可以做數據類型轉換映射,這個視情況需要而改。

