0

我正在尝试使用 Mybatis 将记录从列表中插入表中。我使用 mybatis velocity 作为脚本语言。看起来问题出在参数符号#中。我尝试用 @ 替换它,因为我使用的是 mybatis 速度但没有任何效果。有人可以帮我吗。

映射器.java:

void insertFileVersions(@Param("versionsList") List<Integer> activeFileVersions);

映射器.xml:

<insert id="insertFileVersions" parameterType="java.util.List">
<foreach collection="versionsList" item="version" index="index">
    INSERT INTO FILE_TEMP (FILE_ID, FILE_VERSION) VALUES (#{version.fileId}, #
{version.fileVersion})
</foreach>
</insert>

我收到错误原因:org.h2.jdbc.JdbcSQLException:找不到列“VERSION.FILEID”;SQL 语句

4

1 回答 1

0

这对 Velocity 来说是完全错误的——您使用的是 XML 语言驱动程序语法。使用 Velocity 语言驱动程序,您可以使用@{...}代替#{...},也可以使用#repeat代替<foreach>。有关一些示例,请参见此页面:http ://www.mybatis.org/velocity-scripting/

但请考虑以不同的方式编写代码并使用 MyBatis 的批处理功能,而不是生成一个巨大的语句。有关示例,请参阅此常见问题解答:https ://github.com/mybatis/mybatis-3/wiki/FAQ#how-do-i-code-a-batch-insert

于 2018-03-16T21:57:42.097 回答