由于MyBatis的官方文档里面没有对如何调用Oracle存储过程的介绍,所以目前网络上的资料都不是很完善。大多数都是一些简单的调用例子,并没有很多更贴近实际应用的多参数多类型的例子。通过一天的研究,现将一个比较复杂的MyBatis调用存储过程的例子分享给大家。
1.??? 存储过程的定义:(包头的定义如下,包体的定义请查阅数据库)
CREATE OR REPLACE PACKAGE "DPTRACK" is
? type ref_dpTrack is ref cursor;
? procedure get_Ows_Track(
billNumber in t_lea_waybill.fnumber%type, --运单号
???????????exMessage? out nvarchar2, --执行时异常信息
???????????baseSet??? out ref_dpTrack, --基本记录集
???????????trackSet?? out ref_dpTrack ?--跟踪记录集
? );
END DPTRACK;
2.??? JAVA中定义两个类(BaseInfo和TrackInfo)来封装返回的结果对象;
3.??? MyBatis映射文件中:
??? id="trackInfoMap">
?????????????
?????????????
?????????????
?????????????
?????????????
?????????????
?????????????
??? id="baseInfoMap">
?????????????
?????????????
?????????????
?????????????
?????????????
?????????????
?????????????
?????????????
?????????????
?????????????
?????????????
?????????????
?????????????