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

2022-09-04 21:52:00

我正在尝试弄清楚如何使用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可以做到这一点,至少不容易......但能做到吗?


答案 1

v3 中的注释应该可以完成所需的操作:@BindBeanList

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

不同之处在于我用 替换了 ,并且返回类型变得只是因为这是一个语句。@SqlBatch@SqlUpdateint[]int


答案 2

推荐