您的位置:首页 > 数据库 > Oracle

Mybatis 调用多游标参数存储过程 Mybatis Oracle Procedure multi cursor

2014-05-15 11:56 555 查看
网上关于Mybatis调用多游标参数存储过程的例子很少,今天正好用到,并写了个例子,记录下来,以备后用,希望对你也有所帮助!

环境:

Mybatis3

Oracle11g

JUnit4

Oracle Procedure:

create or replace procedure test_getDeliverys(
idList IN VARCHAR2,
cur_delivery out sys_refcursor,
cur_delivery1 out sys_refcursor)
is
begin
open cur_delivery for select ID,PUBMEMBERID from delivery;
open cur_delivery1 for select ID,PUBMEMBERID from delivery;
end test_getDeliverys;


接口:IDeliveryDAO

public void getDeliverys123(Map<String, Object> deliverys);


DeliveryMapper.xml

<resultMap id="dMap" type="com.rcollar.rcmtm.order.entity.Delivery">
<id column="ID" jdbcType="VARCHAR" property="id" />
<result column="PUBMEMBERID" jdbcType="VARCHAR" property="pubmemberid" />
</resultMap>
<parameterMap id="paramMap" type="java.util.HashMap">
<parameter property="idList" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>
<parameter property="deliverys" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="dMap"/>
<parameter property="deliverys1" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="dMap"/>
</parameterMap>
<select id="getDeliverys123" parameterMap="paramMap" resultType="java.util.Map" statementType="CALLABLE">
<![CDATA[
call test_getDeliverys(?,?,?)
]]>
</select>
JUnit4 Test

public class IDeliveryDAOTest extends BasicSpringBasedTest{

private static Logger log = Logger.getLogger(IDeliveryDAOTest.class);

@SuppressWarnings("unchecked")
@Test
public void test() {
IDeliveryDAO dao = (IDeliveryDAO) ApplicationContextUtil
.getApplicationContext().getBean("iDeliveryDAO");
try {
Map<String, Object> param = new HashMap<String, Object>();
param.put("idList", "11");
param.put("deliverys", OracleTypes.CURSOR);
param.put("deliverys1", OracleTypes.CURSOR);
dao.getDeliverys123(param);
List<Delivery> deliveryList = (List<Delivery>) param.get("deliverys");
for (Delivery d : deliveryList) {
log.info("111++++++:"+d.getPubmemberid()+";		+++++"+d.getId());
}
List<Delivery> deliveryList1 = (List<Delivery>) param.get("deliverys1");
for (Delivery d : deliveryList1) {
log.info("222++++++:"+d.getPubmemberid()+";		+++++"+d.getId());
}
} catch (Exception e) {
log.error(e.getMessage());
}
}
}


运行结果:

[2014-05-15 11:56:08.581] [INFO] [main] [IDeliveryDAOTest:39] - 111++++++:2c9082193a4f1dd0013a52c0262f0011;		+++++61
[2014-05-15 11:56:08.581] [INFO] [main] [IDeliveryDAOTest:39] - 111++++++:aae004e93fd248e4013fd57c71860021;		+++++c2cb69c36f144b1da2f20bf6e139af49
[2014-05-15 11:56:08.581] [INFO] [main] [IDeliveryDAOTest:39] - 111++++++:aae004e93fd248e4013fd57c71860021;		+++++4397b7aa9d3344d98941c7ac3fb0fb85
[2014-05-15 11:56:08.581] [INFO] [main] [IDeliveryDAOTest:39] - 111++++++:aae004e93fd248e4013fd57c71860021;		+++++2a23e9c68bae48bf9eaf39c6894ed013
[2014-05-15 11:56:08.591] [INFO] [main] [IDeliveryDAOTest:43] - 222++++++:2c9082193a4f1dd0013a52c0262f0011;		+++++61
[2014-05-15 11:56:08.591] [INFO] [main] [IDeliveryDAOTest:43] - 222++++++:aae004e93fd248e4013fd57c71860021;		+++++c2cb69c36f144b1da2f20bf6e139af49
[2014-05-15 11:56:08.591] [INFO] [main] [IDeliveryDAOTest:43] - 222++++++:aae004e93fd248e4013fd57c71860021;		+++++4397b7aa9d3344d98941c7ac3fb0fb85
[2014-05-15 11:56:08.591] [INFO] [main] [IDeliveryDAOTest:43] - 222++++++:aae004e93fd248e4013fd57c71860021;		+++++2a23e9c68bae48bf9eaf39c6894ed013


参考:
http://www.apachebookstore.com/confluence/oss/display/IBATIS/Oracle+REF+CURSOR+Solutions?decorator=printable http://wang3065.iteye.com/blog/1019049 http://liuzan.blog.51cto.com/6103676/1211162
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐