多次插入Oracle Mybatis Spring使用Insert All

时间:2014-11-11 10:31:48

标签: oracle mybatis

我正在尝试使用Mybatis foreach功能将对象列表插入Oracle数据库中的单个表。

例如,我有一个表'Test_A',它有一个可空的VARCHAR列'Description'。

我将一个字符串列表传递给mybatis方法,其映射器如下所示。

<insert id = "testMultipleInserts"  parameterType="java.util.List">
    Insert All 
    <foreach collection="list" item="element" index="index">
        Into Test_A (Description) values (#{element.description})
    </foreach>
    select * from dual
</insert>

当我调用上述方法时,它会将以下查询打印到日志

      Insert All Into Test_A (Description) values (?) Into Test_A (Description) values (?) Into Test_A (Description) values (?) select * from dual 

我希望按照Oracle方言使用正确的语法(我从SQL浏览器执行,这可行)

但是从提供给方法的List参数中读取列表元素似乎存在一些问题。我得到一个例外,如下所示。

      org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_element_0' not found. Available parameters are [list]

1 个答案:

答案 0 :(得分:0)

我对您正在尝试的查询一无所知,但堆栈跟踪明确指出其参数问题会将parameterType从java.util.List更改为list

<insert id = "testMultipleInserts"  parameterType="list">
    Insert All 
    <foreach collection="list" item="element" index="index">
        Into Test_A (Description) values (#{element.description})
    </foreach>
    select * from dual
</insert>