Я хочу сделать сложный запрос и позволить JDBI обработать сопоставление результатов. Обычно я бы сделал что-то вроде этого:
interface MyDao {
@MapResultAsBean @SqlQuery("hardcoded query with :arg here")
ResultDto query(@Bind("arg") String arg);
}
ResultDto result = dbi.open(MyDao.class).query(arg);
Поскольку запрос генерируется во время выполнения, я не могу этого сделать, но я все же хочу использовать функции сопоставления набора результатов. Я пробовал использовать интерфейс Handle:
String query = generateCustomQuery();
ResultDto result = dbi.open().createQuery(query).mapTo(ResultDto.class).first();
но я не вижу способа передать arg
. Я мог бы объединить его в сгенерированный запрос, но я бы предпочел передать его, как если бы использовал PreparedStatement
.