Я использую QueryDSL просто для динамических запросов в Spring Boot 2+ с приложениями Spring Data JPA следующим образом:
@Override
public Iterable<Books> search(String bookTitle, String bookAuthor, String bookGenre) {
BooleanBuilder where = dynamicWhere(bookTitle, bookAuthor, bookGenre);
return booksRepository.findAll(where, orderByTitle());
}
public BooleanBuilder dynamicWhere(String bookTitle, String bookAuthor, String bookGenre) {
QBooks qBooks = QBooks.books;
BooleanBuilder where = new BooleanBuilder();
if (bookTitle != null) {
where.and(qBooks.title.equalsIgnoreCase(bookTitle));
}
if (bookAuthor!= null) {
where.and(qBooks.author.eq(bookAuthor));
}
if (bookGenre!= null) {
where.and(qBooks.genre.eq(bookGenre));
}
return where;
}
Я хочу использовать JOOQ аналогичным прозрачным способом, но я не знаю, как это сделать элегантно. Мне также нравится, что в JOOQ нет сгенерированных конструкций, подобных QBooks, хотя я думаю, что JOOQ также генерирует некоторые таблицы. Во всяком случае, я запутался и не смог найти ответ в Интернете, поэтому я спрашиваю, можно ли это сделать и как.
Спасибо