mybatis使将输入的java对象中的_如何使用MyBatis将对象的Java列表传递给Oracle存储过程?...

小编典典

我无法确定您是否已经这样做,但是您需要定义Oracle对象。

CREATE OR REPLACE TYPE SCHEMA."YOUR_OBJECT" AS OBJECT

(

field_one varchar2(50),

field_two varchar2(100)

);

/

CREATE OR REPLACE TYPE SCHEMA."YOUR_OBJECT_ARRAY" AS TABLE OF YOUR_OBJECT;

/

然后,您可以编写类型处理程序以将Java对象映射到Oracle对象。

import oracle.sql.ARRAY;

import oracle.sql.ArrayDescriptor;

import oracle.sql.STRUCT;

import oracle.sql.StructDescriptor;

....

public class YourTypeHandler implements TypeHandler

{

....

public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException

{

List objects = (List) parameter;

StructDescriptor structDescriptor = StructDescriptor.createDescriptor("YOUR_OBJECT", ps.getConnection());

STRUCT[] structs = new STRUCT[objects.size()];

for (int index = 0; index < objects.size(); index++)

{

YourObject pack = packs.get(index);

Object[] params = new Object[2];

params[0] = pack.getFieldOne();

params[1] = pack.getFieldTwo();

STRUCT struct = new STRUCT(structDescriptor, ps.getConnection(), params);

structs[index] = struct;

}

ArrayDescriptor desc = ArrayDescriptor.createDescriptor("YOUR_OBJECT_ARRAY", ps.getConnection());

ARRAY oracleArray = new ARRAY(desc, ps.getConnection(), structs);

ps.setArray(i, oracleArray);

}

}

然后调用该过程,

call your_proc

(

#{yourObjects, javaType=Object, jdbcType=ARRAY, jdbcTypeName=YOUR_OBJECT_ARRAY, mode=IN, typeHandler=YourObjectArrayTypeHandler}

)

2020-11-04

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值