繁体   English   中英

@SqlBatch 在 jdbi sql 对象 api 中进行多次插入

[英]@SqlBatch making multiple inserts in jdbi sql object api

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

如何在一次推送中插入所有记录?

正如您从日志中看到的那样,它会打开事务并一次性完成。 所以基本上你正在实现“单推”。 不幸的是,您不能将多个插入合并为一个,除非您想通过直接 JDBC 查询或 *Dialect 扩展自己完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM