当前位置: 首页 > 知识库问答 >
问题:

@SqlBatch在JDBI SQL对象API中进行多次插入

朱欣荣
2023-03-14
public interface UserDBDao {
    @SqlBatch ("INSERT INTO user (id, name) VALUES (:user.id, :user.name)")
    void createAllUsers(@BindBean("user") List<User> users);
}

当我尝试使用上述方法插入多行时,即使在使用@SqlBatch之后,它也会进行多次插入查询。Sql日志如下

2019-12-18T09:33:41.375486Z    22 Query SET autocommit=0
2019-12-18T09:33:41.376469Z    22 Query SELECT @@session.transaction_read_only
2019-12-18T09:33:41.376791Z    22 Query INSERT INTO user (id, name) VALUES (1000, 'a0')
2019-12-18T09:33:41.377059Z    22 Query INSERT INTO user (id, name) VALUES (1001, 'a1')
2019-12-18T09:33:41.377248Z    22 Query INSERT INTO user (id, name) VALUES (1002, 'a2')
2019-12-18T09:33:41.377427Z    22 Query INSERT INTO user (id, name) VALUES (1003, 'a3')
2019-12-18T09:33:41.377618Z    22 Query commit
2019-12-18T09:33:41.377903Z    22 Query SET autocommit=1

如何单次推送插入所有记录?

共有1个答案

祁均
2023-03-14

正如您可以从日志中看到的,它会打开事务并一次性完成。所以基本上,你已经实现了“单推”。不幸的是,您不能将多个插入合并到一个插入中,除非您想自己使用直接JDBC查询或*方言扩展来完成。

 类似资料:
  • 问题内容: 如果条目不存在,我想将数据插入多个表中。 就我而言,我有一个餐厅表,一个位置表,一个表以及一些辅助表,例如和。现在,我想插入一个新的餐厅条目,其中包含位置和食物类型信息(如果该条目不存在)。 所以像这样: 如何使用简单的SQL执行此操作? 问题答案: 我只是在脑海中写下了这个,但是如果您必须使用简单的sql来做的话,这应该是个主意。 编辑: 同样,我无法解析它,但您可能可以使用WITH

  • 问题内容: 在Ruby中,我没有重复很多次“ require”(在Python中为“ import”)一词,而是 因此,它将遍历每个“ lib”和“ require”(导入)的集合。现在,我正在编写Python脚本,我想做类似的事情。是否有办法为所有这些人写“导入”。 简单的“引导”将类似于以下代码。无论如何,由于Python不会导入命名为字符串的库,因此它不起作用。 提前致谢 问题答案: 对于已

  • 问题内容: 例如具有以下代码: 我如何排序此json这样- 我用ID对用户进行了排序。. 我不知道如何在javascript中执行此操作。 问题答案: 首先,这 不是 JSON。这是一个JavaScript对象文字。JSON是数据的 字符串表示 形式,它恰好非常类似于JavaScript语法。 其次,您有一个对象。他们没有排序。不能保证元素的顺序。如果要保证顺序,则 需要 使用数组。这将需要您更改

  • 我试着在我的表A中“复制”几行。这个表(A)只有两个字段是外键。一个引用表B,另一个引用表c。 现在,我想从A中提取几行,并将它们重新插入(复制)到A中。这样,我将更改其中一个外键(FK1)。 这段代码运行起来没有任何问题。但是我需要复制的不仅仅是一行。当然,我可以做一个SELECT语句并使用fetch_array逐行插入每一行,但是我想更优雅地解决它。像这样: 我也试过了 不幸的是,这两种方法都

  • 我是sybase db的新手。我正在尝试使用以下代码插入多行 并且我在第一条语句的末尾收到错误“';'附近的语法不正确”?有什么想法吗?

  • 问题内容: 我正在寻找一种在Oracle 9数据库中执行多行插入的好方法。以下内容在MySQL中有效,但Oracle似乎不支持以下内容。 问题答案: 这在Oracle中有效: 这里要记住的是使用语句。