2016-08-02 5 views
0

По какой-то причине я не могу использовать BindIn, но мне нужно использовать BindBeans для передачи в список строковых значений для предложения. У меня есть ниже, но, похоже, я не могу передать типы, как мне хотелось. Проконсультируйтесь, пожалуйста?Как ввести список строк в sql с помощью BindBeans

*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);* 

ответ

1

Вы должны быть в состоянии сделать это с @BindIn:

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

Для @BindIn работать, вам также необходимо добавить @UseStringTemplate3StatementLocator к классу доступа. JDBI это нужно, чтобы

Вы, вероятно, также необходимо добавить эту зависимость:

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

Вот несколько связанных сообщение:

https://stackoverflow.com/a/19200912/2108024

+0

Спасибо, упомянутый ранее, что я не могу использовать BindIn, поскольку мне нужно поместить все параметры в один компонент. Так что придется использовать BindBean. Любое предложение ? – chloes

+0

Я не верю, что можно использовать BindBean таким образом. Я думаю, вам нужно как-то использовать BindIn - получить список в слое java или реализовать MyFilter iterable (что позволит вам использовать его в BindIn) – Sperr

0

Если вы хотите, чтобы некоторые динамическую часть (видов) SQL вы можете использовать stringtemplates.

@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> 

В моем случае это было очень полезно для динамической сортировки. Это помогает.