Komische Überschrift, ich weiß...
Ein Kollege bastelt an etwas, das das dynamische Zusammenbauen von Abfragen erleichertern soll. Als Beispiel für die Verwendung hat er mir das hier geschickt:
Ich finde das bezüglich der Syntax ... sagen wir mal "lustig grenzwertig". Dazu muss man wissen, dass "harte" SQL-Strings mit String.format oder so in der Firma verpönt sind (da sind wohl schon welche tüchtig auf die Nase gefallen beim DB-System wechseln), also Operatoren usw. nur an einer Stelle kodiert sein sollen.
1) Gibt es für soetwas in dieser Art vielleicht schon einen Baukasten?
2) mich stören die ...paranthesis() Methoden. Bekommt man die weg, ohne die launige Syntax kaputt zu machen?
3) Wie bekommt man da ein wenig Typsicherheit rein (ich vermute mal, bisher steckt da nur ein "cleverer StringBuilder" dahinter
4) Haltet ihr das generell für eine gute Idee? Gibt es "bewährte" Alternativen?
Ein Kollege bastelt an etwas, das das dynamische Zusammenbauen von Abfragen erleichertern soll. Als Beispiel für die Verwendung hat er mir das hier geschickt:
Code:
whereClause . and ().
openParanthesis().
like(OrderHeadDAB. PROFORMA_VALIDITY_DATE_VALUE , poNumber ).
or().exists().
openParanthesis().
select().star().
from(OrderItemDAB. OID_VALUE .getTableName()).
where().equals(OrderItemDAB. ORDER_OID_VALUE , OrderHeadDAB. OID_VALUE ).
and().like(OrderItemDAB. PURCHASE_ORDER_IDVALUE , poNumber ).
closeParanthesis().
closeParanthesis();
Ich finde das bezüglich der Syntax ... sagen wir mal "lustig grenzwertig". Dazu muss man wissen, dass "harte" SQL-Strings mit String.format oder so in der Firma verpönt sind (da sind wohl schon welche tüchtig auf die Nase gefallen beim DB-System wechseln), also Operatoren usw. nur an einer Stelle kodiert sein sollen.
1) Gibt es für soetwas in dieser Art vielleicht schon einen Baukasten?
2) mich stören die ...paranthesis() Methoden. Bekommt man die weg, ohne die launige Syntax kaputt zu machen?
3) Wie bekommt man da ein wenig Typsicherheit rein (ich vermute mal, bisher steckt da nur ein "cleverer StringBuilder" dahinter
4) Haltet ihr das generell für eine gute Idee? Gibt es "bewährte" Alternativen?