2017-12-20 18 views
2

私はJDBIで複数行の挿入文を実行する方法を理解しようとしています。ここでJDBIを使用して単一のINSERTで複数の行を挿入する方法?

は、私が持っているものです:

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

...正常に動作されますが、挿入された行数と同数のINSERT文で結果。私。挿入された2つの行が存在する場合、それはこのようなものになり:

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がこれをやっているとは思わない、少なくとも簡単にはできない...しかしそれはできる? v3では

+0

あなたはどのバージョンのJdbiを使用していますか? – qualidafial

+0

私はバージョン2.55を使用しています – Eddified

答えて

1

@BindBeanList注釈は、あなたが望む何を達成する必要があります

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

@SqlBatch@SqlUpdateに交換し、これが今、単一のステートメントであるため、int[]戻り値の型がちょうどintに変更されました。なお。

関連する問題