In meinem Java-Code habe ich so etwas:
%Vor%Ich möchte meinen Code so aufräumen:
%Vor% Ich habe gelesen, dass ResourceBundle
für die Lokalisierung ist. Also ich denke nicht, dass es in meinem Fall passt.
Was sollte all_queries
sein?
BEARBEITEN: Das Wichtigste für mich ist, den Code aufzuräumen.
Ich würde es in eine Datei mit einer SQL-Erweiterung einfügen und Queries
like:
Benutzer:
%Vor% Das ist natürlich nur eine Möglichkeit. Sie können Queries
return Statement
verwenden oder sogar einen dynamischen Proxy verwenden, um ihn hinter einer einfachen Java-Schnittstelle zu maskieren (wobei der Proxy-Handler eine Anweisung erstellen, Parameter setzen und eine Abfrage ausführen könnte). Ihre Laufleistung kann variieren.
Zusätzlicher Vorteil: SQL-Dateien haben eine Syntaxfarbe und sind Weise einfacher zu verwalten als Strings in Java.
Da Sie eine Zuordnung von einem Schlüssel (Name) zu einem Wert (lange Abfrage) benötigen, was mit einem Wörterbuch (auch bekannt als map) erreicht wird , assoziatives Array) Datenstruktur.
Sie sollten Ihre Konfiguration in einer Datei getrennt von Ihrem Code speichern. Ich empfehle das Konfigurationsformat .ini , das sehr gut lesbar ist, in Abschnitte unterteilt werden kann und einen guten Parser für fast jede Computersprache.
Ihre Konfigurationsdatei sieht folgendermaßen aus:
%Vor% Mit dem ini4j
-Modul können Sie Ihre Abfragen so einfach erstellen wie:
Ich würde sie einfach machen
%Vor%Die Externalisierung in eine Textdatei wie ein Ressourcenbündel würde funktionieren, aber ich bin nicht davon überzeugt, dass es notwendig ist, oder sogar eine gute Idee, da dies zu einer Denkweise führen könnte, dass diese nicht wirklich "Code" sind Daher müssen Änderungen nicht wirklich getestet werden.
Eine einfache Lösung wäre, die Datei mit den normalen Eigenschaften zu verwenden. Die Antwort lautet Sauberste Möglichkeit, eine SQL-Zeichenfolge in Java zu erstellen
Das einzige Problem ist, dass die neue Zeile durch "\" getrennt werden muss z.B.
%Vor%dann können Sie
verwenden %Vor%Ja, "\" ist immer noch hässlich, aber es ist sauberer und einfacher zu formatieren, verglichen mit der Java String / StringBuilder-Verkettung, imo.
Wenn Sie ein saubereres Format unterstützen möchten, können Sie möglicherweise Ihren eigenen Parser erstellen oder das XML-Format verwenden. Aber ich denke, es ist ein Overkill.
Off topic: Muss Groovy 's mehrzeilige Zeichenfolge (schamlos) lieben:
%Vor%Eine HashMap wäre einfach, da Sie von einem Abfragenamen / -schlüssel zu einer Abfrage / einem Wert mappen möchten. Jede Karte würde wirklich funktionieren.
%Vor%Sie könnten ein Singleton verwenden, wenn Sie es statisch halten möchten.
%Vor%Oder Sie könnten einfach statische Strings verwenden, wie von djna vorgeschlagen:
%Vor%Vielleicht liegt das Problem in der Struktur Ihrer Anwendung. Trennen Sie Ihre Java-Klassen in Pakete "dao", "service" usw.?
Wenn Sie Ihr Projekt organisieren, müssen Sie nicht ResultSet rs = statement.executeQuery( all_queries.getQuery("The very long one") )
aufrufen, sondern stattdessen Result res = dao.getSomethingYouNeed(param1, param2, ...);
Wenn wir mehrere Abfragen in eine Textdatei (nicht in eine Eigenschaftendatei) schreiben, können wir eine einzelne Abfrage von allen abrufen oder abrufen.
MyBatis macht das sofort und funktioniert wie ein Champion!
Tags und Links sql java coding-style