2016-03-01 62 views
1

我想做一個複雜的查詢,並讓JDBI處理結果映射。通常情況下,我會做這樣的事情:讓JDBI映射自定義查詢的結果

interface MyDao { 
    @MapResultAsBean @SqlQuery("hardcoded query with :arg here") 
    ResultDto query(@Bind("arg") String arg); 
} 
ResultDto result = dbi.open(MyDao.class).query(arg); 

由於查詢是在運行時產生的,我不能做到這一點,但我仍想使用結果集映射功能。我已經使用手柄接口的嘗試:

String query = generateCustomQuery(); 
ResultDto result = dbi.open().createQuery(query).mapTo(ResultDto.class).first(); 

,但我不明白的方式傳遞arg。我可以將它連接到生成的查詢中,但我寧願通過它,就好像使用PreparedStatement一樣。

回答

2

我相信你想利用bind

dbi.open().createQuery(query).mapTo(ResultDto.class).bind(":arg", "value").first();