如何使用 BindBeans 将字符串列表输入到 sql

How to input list of string to a sql using BindBeans

出于某种原因,我不能使用 BindIn,但必须使用 BindBeans 为 in 子句传入字符串值列表。我在下面,但似乎无法按我想要的方式传递类型。有什么建议吗?

*MyFilter {
private final String Types; 
private final Timestamp Date;
 public MyFilter (){
    this.Types = "A','B"
    THIS.Date = now();
 }

}
@SqlQuery("select * from table where type in (:Types) and date = :Date  ")
public abstract List<xx> get(@BindBean MyFilter filter);*

你应该可以用@BindIn 做到这一点:

@SqlQuery("select * from table where type in (<types>) and date = :Date")
public abstract List<xx> get(@BindIn List<String> filter);

要使 @BindIn 正常工作,您还需要将 @UseStringTemplate3StatementLocator 添加到您的访问权限 class。 JDBI 需要这个

您可能还需要添加此依赖项:

<dependency>
    <groupId>org.antlr</groupId>
    <artifactId>stringtemplate</artifactId>
    <version>3.2.1</version>
</dependency>

这里有点相关post:

如果您想要 SQL 的一些动态部分,您可以使用字符串模板。

@UseStringTemplate3StatementLocator
public abstract class MyDAO {

    @SqlQuery("select * from table where type in (<types>) and date = :Date  ")
    public abstract List<xx> get(@Define("types") String types);

....

您将需要添加此依赖项:

 <dependency>
       <groupId>org.antlr</groupId>
       <artifactId>stringtemplate</artifactId>
       <version>3.2</version>
 </dependency>

就我而言,它对动态排序非常有用。希望这有帮助。