Большинство предикатов выражения значения строки являются просто синтаксическим сахаром для более подробного синтаксиса.В вашем случае:
SELECT *
FROM books b
WHERE (b.price = 20 AND b.name = 'book1')
OR (b.price = 30 AND b.name = 'book2')
OR (b.price = 15 AND b.name = 'book3')
Обратите внимание, что если вы хотите динамически построить этот тип предиката, вам нужно либо написать конструктор SQL самостоятельно, сопоставить карту с набором строк SQL и связать переменную, либо использоватьсуществующий, такой как jOOQ
Если у вас есть более сложные синтаксисы, которые вы хотите эмулировать таким образом, вы можете использовать переводчик jOOQ SQL для перевода их из стандартного SQLк более основному SQL
(Отказ от ответственности: я работаю в компании за jOOQ)