如何使用JDBI通过单个INSERT插入多行?

问题描述 投票:4回答:1

我试图找出如何使用JDBI执行多行插入语句。

这是我得到的:

@SqlBatch("INSERT INTO my_table(col1, col2) VALUES (:col1, :col2)")
@BatchSize(size=300)
public abstract int[] insertRows(@BindBean MyObj ... objs);

...工作正常,但导致插入行的INSERT语句数量很多。即如果插入了两行,则会产生如下所示:

INSERT INTO my_table(col1, col2) VALUES ('a', 'b');
INSERT INTO my_table(col1, col2) VALUES ('c', 'd');

......当我想要的时候看起来像这样:

INSERT INTO my_table(col1, col2) VALUES ('a', b'), ('c', 'd');

我希望它可以将可变数量的对象作为输入。我不认为JDBI可以做到这一点,至少不容易......但是可以吗?

java jdbi
1个回答
4
投票

v3中的@BindBeanList注释应该可以达到你想要的效果:

@SqlUpdate("insert into my_table (col1, col2) values <values>")
int insertRows(@BindBeanList(propertyNames = {"col1", "col2"}) MyObj... objs);

请注意,@SqlBatch被替换为@SqlUpdate,并且int[]返回类型被更改为int,因为现在这是一个单一的陈述。

© www.soinside.com 2019 - 2024. All rights reserved.