【问题标题】:Insert list of records using mybatis使用mybatis插入记录列表
【发布时间】:2018-03-17 05:59:49
【问题描述】:

我正在尝试使用 Mybatis 将记录从列表中插入到表中。我使用 mybatis velocity 作为脚本语言。看起来问题出在参数符号#中。我尝试用 @ 替换它,因为我使用的是 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语句

【问题讨论】:

    标签: mybatis h2db


    【解决方案1】:

    这对 Velocity 来说是完全错误的——您使用的是 XML 语言驱动程序语法。使用 Velocity 语言驱动程序时,您可以使用 @{...} 而不是 #{...},还可以使用 #repeat 而不是 &lt;foreach&gt;。有关示例,请参阅此页面:http://www.mybatis.org/velocity-scripting/

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

    【讨论】:

    • 谢谢!我能够使用#repeat 解决此问题。
    猜你喜欢
    • 1970-01-01
    • 2020-08-04
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    相关资源
    最近更新 更多