java使用mybatis将POJO项数组传递到存储过程?
我有以下java类:
public class item implements Serializable {
private long id;
private String name;
public long getUuid() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
让我们假设我有一个这样的数组-我有一个可以在集合上迭代的存储过程-称为“@pItemsToProcess”
我需要做什么才能使我的存储过程接受这个数组
所以我需要编写某种类型的处理程序?如果是的话,它会用于阵列吗?“项目”类?两者都有
我见过其他用户提出类似的问题,但似乎没有一个有效的解决方案
我也愿意让DB团队将存储过程更改为一次处理一个项目,并用每个项目调用proc,如果这样更容易的话?因为这个进程一天只被调用一次,大约有20个项目,所以它对延迟不敏感,我们也不担心负载
在这行下面编辑----------
数据库类型是SQL server
# 1 楼答案
如果DB是SQL server,我已经回答了same question
编辑:
链接Table-Valued Parameter的锚似乎不起作用,有趣的片段在章节中,将表值参数作为SQLServerDataTable对象传递
类型处理程序是参数的一种限定符。它用于每个参数,但通常未指定,因为Mybatis根据默认映射类型将类型处理程序解析为使用匹配的参数类型=>;打字机。TypeHandler通常被指定为使用自定义类型处理程序来处理复杂的类型,以实现特定的行为
在我提到的答案中,我并没有给出OP的具体情况的解决方案,而是把所有的部分放在一起:
{a3}是关于将SQL数组传递给Oracle DB的。然后,解决方案是将其改为传递SQL Server表值参数