Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用mybatis将POJO项数组传递给存储过程?_Java_Sql_Stored Procedures_Mybatis - Fatal编程技术网

Java 使用mybatis将POJO项数组传递给存储过程?

Java 使用mybatis将POJO项数组传递给存储过程?,java,sql,stored-procedures,mybatis,Java,Sql,Stored Procedures,Mybatis,我有以下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 Stri

我有以下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。

如果DB是SQL server,我已经回答了很多问题

编辑

链接的锚点似乎不起作用,有趣的片段出现在章节中,将表值参数作为SQLServerDataTable对象传递

类型处理程序是参数的一种限定符。它用于每个参数,但通常未指定,因为Mybatis根据默认映射类型=>typeHandler解析类型处理程序以使用匹配的参数类型。TypeHandler通常被指定为使用自定义类型处理程序来处理复杂的类型,以实现特定的行为

在我提到的答案中,我并没有给出OP的具体情况的解决方案,而是将所有的部分放在一起:


问题是将SQL数组传递给Oracle DB。然后,解决方案是将其改为传递SQL Server表值参数。

解决方案存在,它们确实依赖于类型处理程序,但实现是特定于DB供应商的驱动程序,您介意在问题中添加这些信息吗?添加了信息:)我昨天在搜索时看到了这个解决方案-是的-DB是SQL server-我可以完全理解您访问过程的xml部分,并将列表交给它-但我不知道如何为此编写类型处理程序?我写它是为了列表吗?我是为“item”类写的吗?也许我两个都这么做了?我是不是在这个例子中遗漏了其他人的问题?我根本不知道typehandler是怎么工作的。