Разрешить 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);

Поскольку запрос генерируется во время выполнения, я не могу этого сделать, но я все же хочу использовать функции сопоставления набора результатов. Я пробовал использовать интерфейс Handle:

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

но я не вижу способа передать arg. Я мог бы объединить его в сгенерированный запрос, но я бы предпочел передать его, как если бы использовал PreparedStatement.


person Jorn    schedule 01.03.2016    source источник


Ответы (1)


Я полагаю, вы хотите использовать bind.

dbi.open().createQuery(query).mapTo(ResultDto.class).bind(":arg", "value").first();
person Michael Lloyd Lee mlk    schedule 01.03.2016