目标:调用存储过程,该存储过程有一个入参(类型 long),一个出参(类型 cursor),从这个cursor中取出一个List。
存储过程:
CREATE OR REPLACE PROCEDURE GET_SOMETHING( SOME_NUMBER IN NUMBER DEFAULT 30, RC1 IN OUT globalPkg.RCT1){ OPEN RC1 FOR SELECT field1, field2 FROM some_table WHERE some_conditions; }
Java类:
public interface SomethingMapperDao { public void getSomething(SomeBean someBean); }
SomeBean 是方法的参数,也是存放返回结果的地方
public class SomeBean { private long someNumber; private List<Something> someList; // getters and setters }
xml 配置文件
<resultMap id="SomethingMap" type="Something"> <!-- id and properties --> </resultMap> <update id="getSomething" parameterType="SomeBean" statementType="CALLABLE"> {CALL GET_SOMETHING(#{someNumber}, #{someList, mode=OUT, jdbcType=CURSOR, javaType=ResultSet, resultMap=SomethingMap} )} </update>
java调用方法
SomeBean someBean = new SomeBean(); someBean.setNum(aNumber); SomethingMapperDao.getSomething(someBean); return someBean.getList();