使用mybatis插入记录列表
Insert list of records using mybatis
我正在尝试使用 Mybatis 从列表中将记录插入 table。我使用 mybatis velocity 作为脚本语言。看起来问题出在参数符号 # 中。我试图用 @ 替换它,因为我使用的是 mybatis velocity 但没有任何效果。有人可以帮帮我吗。
Mapper.java:
void insertFileVersions(@Param("versionsList") List<Integer> activeFileVersions);
mapper.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 声明
这对 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
我正在尝试使用 Mybatis 从列表中将记录插入 table。我使用 mybatis velocity 作为脚本语言。看起来问题出在参数符号 # 中。我试图用 @ 替换它,因为我使用的是 mybatis velocity 但没有任何效果。有人可以帮帮我吗。
Mapper.java:
void insertFileVersions(@Param("versionsList") List<Integer> activeFileVersions);
mapper.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 声明
这对 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