Chodzi o sięganie z Javy do baz SQL. Użyję nazwanych parametrów (więc lepiej niż na JDBC). Parametr może być - lub może go nie być, null, pusty, bez selekcji, weź wszystko
Przypuszczalna implementacja na JDBI
query = "select * from invoices where date ... and invoices.customerId = :cust"
..setParameter(":cust" , someCustomer)
to wiadomo jak działa
i żeby ta kwerenda się automatycznie przekonfigurowała dla wszystkich
..setParameter(":cust" , null)
Tu ma zgromadzić wszystko w dziedzinie czasu, z wszystkich customerów
Kombinuję ale mam spore wątpliwości. Ma nie rzucać wyjątkami javowskimi, ma nie zabijać wydajności kwerendy itd...
"select * from invoices where date ... and (invoices.customerId = :cust or :cust is null)"
albo łatwiejsze
"select * from invoices where date ... and (invoices.type = :tp or :tp='*' )"
W starszym soluszynie string kwerendy był warunkowo sklejany (z parametrami, spoko, nie krzyczcie) na oba warunki, zachciało mi się ładniej