如何在JDBI中使用@SQLUpdate将字符串列表作为参数?

时间:2018-02-08 02:08:25

标签: java jdbi

我有一个需要使用列表多次执行的SQL语句,现在我正在使用@SQLBATCH执行此操作。

@SqlBatch("INSERT INTO table (name, id) values (:names, :id)")
public abstract void addName(
    @Bind("names") List<String> names,
    @Bind("id") long id);

我想返回受影响的行数的int。所以我查看了@SQLUpdate,但似乎@SQLUpdate并没有将列表作为参数。

@SqlUpdate("INSERT INTO table (name, id) values (:names, :id)")
public abstract int addName(
    @Bind("names") List<String> names,
    @Bind("id") long id);

我收到此错误:UnableToCreateStatementException:绑定时出现异常。

有什么办法可以返回受影响行数的int吗?

1 个答案:

答案 0 :(得分:0)

我认为您不能以这种方式使用@Update

也许您可以以某种方式使用@BindIn我看不到,但主要是构建in - id in ('a', 'b', 'c', 'd')等条件。

此外,我认为您不需要它,因为您的names参数中的元素数量已经为您提供@SqlBatch执行的插入数量。

因此,在调用代码中,您可以使用name.size()来获取已执行的插入数。