使用Insert All多次插入Oracle Mybatis Spring
我试图使用Mybatis foreach功能将对象列表插入到Oracle数据库中的单个表中 例如,我有一个表“Test_a”,它有一个可为空的VARCHAR列“Description” 我将字符串列表传递给mybatis方法,其映射器如下所述使用Insert All多次插入Oracle Mybatis Spring,oracle,mybatis,Oracle,Mybatis,我试图使用Mybatis foreach功能将对象列表插入到Oracle数据库中的单个表中 例如,我有一个表“Test_a”,它有一个可为空的VARCHAR列“Description” 我将字符串列表传递给mybatis方法,其映射器如下所述 <insert id = "testMultipleInserts" parameterType="java.util.List"> Insert All <foreach collection="list" item
<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>
我希望它的语法与我在SQL Browser中执行的Oracle方言一致,这样就行了
但是从提供给方法的list参数中读取list元素似乎存在一些问题。我得到一个例外,如下所示
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_element_0' not found. Available parameters are [list]
我不知道您正在尝试的查询,但堆栈跟踪清楚地表明,它的参数问题将parameterType从java.util.List更改为List
是否确实没有任何元素.description不为null?为什么从dual中选择*呢?我正在将列表中的所有非空值传递给element.description。关于select*from dual,我真的不知道为什么我们必须提供它,但在某个地方读到,它必须遵循Oracle中的Insert all语句。它可以是select*from dual或任何select查询from dual。
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_element_0' not found. Available parameters are [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>