[Java lista] dinamikus query
Zsombor
gzsombor at gmail.com
2008. Okt. 14., K, 22:49:49 CEST
2008/10/14 Halász-Szabó Dániel <fisha at freemail.hu>
> Sziasztok!
>
> Tudtuk nekem ajánlani valami kĂ©sz cuccot dinamikus queryk felĂ©pĂtĂ©sĂ©re?
> Kicsit konkretizálom a dolgot:
> gyakran előforduló igény, hogy lehessen szűrni egy listában legalább 10
> féle mező szerint. Bejön a sok mező értéke, csak az alapján tudok
> dönteni, hogy kell-e rá szűrnöm vagy sem, hogy null-e vagy nem. Magát az
> sql-t még összeollózom kézzel ha kell, de hogy setelem be az értékeket a
> preparedstatement-ben poziciĂł helyesen. Persze ha nagyon nincs ilyen
> kĂ©szen, akkor Ărok magamnak valamit rá, de minek feltalálni a melegvizet.
>
> Előre is köszi.
>
> Ăśdv,
> Fisha
>
Öszintén szólva ezzel a problémával számtalanszor találkoztam, úgyhogy majd
minden projektben amiben részt vettem, létezik egy QueryBuilder nevü
osztály, amit nagyjábĂłl Ăgy lehetsĂ©ges használni:
QueryBuilder q = new QueryBuilder("from MyObject o ");
if (aparam!=null) {
q.addParam(" o.ize = ? ", aparam);
}
if (bparam !=null) {
q.addParam(" o.valami = ?", bparam);
}
if (cparam != null) {
q.joinTable(" OtherObject c");
q.addFragment(" o.bigyo.id = c.id ");
q.addParam("c.valami = ?", cparam);
}
if (setParameter.size()>0) {
q.addInParam(" o.masvalami ", setParameter); // ebbol "o.masvalami in
(?,?,?,....?)" lesz
}
aztán a végén a query builder legyártja a
PreparedStatement-et/Spring/JPA/Hibernate query objektumot, miközben kirakja
a szĂĽksĂ©ges AND-eket, beállĂtja a paramĂ©tereket (TopLink/EclipseLink
esetében a ?-eket lecseréli ?<szám> kombinációra), stb, stb. Elég tömör
queryket eredményez ez az egész, hogy nem kell fejben tartani mindig, hogy
most akkor egy AND vagy egy WHERE-r rakjon ki az ember.
A nem túl eredeti ötletem jogdijairól most lemondok :)
Zs
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20081014/b533b8d8/attachment.html
További információk a(z) Javalist levelezőlistáról