我正在尝试使用Mybatis从列表中将记录插入到表中。我使用mybatis速度作为脚本语言。看起来问题出在参数符号#中。我试图用@替换它,因为我使用mybatis速度但没有任何效果。有人可以帮帮我。
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语句
答案 0 :(得分: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