Verwendung von Groß-/Kleinschreibung für Java- und SQL-Kennungen durch pureQuery beim Ausführen von SQL-Anweisungen und Erstellen von Beans oder Map-Objekten

Wenn Sie eine Bean oder ein Map-Objekt in einer mit Annotationen versehenen Methode oder integrierten Methode zum Übergeben von Werten an Parameter in einer Klausel WHERE verwenden und von pureQuery eine Bean oder ein Map erstellt wird, um ein Abfrageergebnis darin zu speichern, folgt pureQuery Regeln hinsichtlich der Groß-/Kleinschreibung von Parametermarken und SQL-Spalten.
  1. Wenn Sie eine Bean oder ein Map-Objekt in einer mit Annotationen versehenen Methode oder integrierten Methode zum Übergeben von Werten an Parameter in einer SQL-Anweisung verwenden, wird die Groß-/Kleinschreibung des Namensteils der Parametermarken in der Anweisung durch pureQuery nicht geändert.

    Diese Regel wird von pureQuery nur befolgt, wenn der Eingabeparameter für eine Methode eine Bean oder ein Map ist. Da dem Teil Name der Parametermarken entweder : oder ? vorangestellt wird, werden sie von pureQuery als Java-Kennungen, bei denen Groß-/Kleinschreibung beachtet werden muss, aufgefasst, wenn die entsprechenden Eigenschaftswerte in der Bean oder im Map gesucht werden.

  2. Wenn von pureQuery eine Bean oder ein Map aus den Ergebnissen einer Abfrage erstellt wird, werden die Kennungen der SQL-Spalten in Kleinschreibung konvertiert. Falls der Rückgabetyp eine Bean ist, wird sie von pureQuery erstellt. Falls der Rückgabetyp ein Map oder vielleicht eine Sammlung von Map-Objekten ist, werden Kennungen in Kleinschreibung von pureQuery an die Methode put() jedes Map übergeben.

Die Java-Regeln für die Gleichheit von Kennungen werden von pureQuery nicht geändert, wenn eine Kennung nur von Java verwendet wird. Die SQL-Regeln für die Gleichheit von Kennungen werden von pureQuery nicht geändert, wenn eine Kennung nur von SQL verwendet wird.

Beispiel 1

In diesem Beispiel erhält eine mit Annotationen versehene Methode eine Bean mit dem Namen Act als Eingabeparameter und übernimmt die Ausführung einer Anweisung SELECT für eine Datenbank. Die Ergebnisse der Anweisung SELECT werden mit dem Wert einer der Eigenschaften der Bean gefiltert.

@Select(sql="select ACTNO, ACTKWD, ACTDESC from ACT where ACTNO = :actNo")
  Act getAct(Act a);

Beim Ausführen der Anweisung SELECT wird von pureQuery zuerst die Bean nach der Methode getActNo() durchsucht. Wird keine solche Methode gefunden, wird von pureQuery eine Eigenschaft mit dem Namen "actNo" gesucht. Wird keine solche Eigenschaft gefunden, wird String "actNo" von pureQuery in der Methode get(String) der Bean übergeben, falls durch die Bean eine solche Methode definiert ist.

Bei der Rückgabe der Act-Objekte, die den übereinstimmenden Datensätzen entsprechen, werden die SQL-Spaltenkennungen von pureQuery in Kleinbuchstaben umgewandelt. Anschließend wird die Bean von pureQuery erstellt.

Beispiel 2

Angenommen, die Methode erhält ein Map als Eingabeparameter und gibt eine Liste von Map-Objekten zurück.

@Select(sql="select ACTNO, ACTKWD, ACTDESC from ACT where ACTNO = :actNo")
  List<Map<String, Object>> getAct(Map<String, Object> a);

Bei der Ausführung der Anweisung SELECT wird String "actNo" von pureQuery an die Methode get(String) von Map übergeben. Bei der Rückgabe der Map-Objekte, die den übereinstimmenden Datensätzen entsprechen, werden die SQL-Spaltenkennungen von pureQuery in Kleinbuchstaben umgewandelt, bevor Sie an die Methode put() der einzelnen Map-Objekte übergeben werden.

Beispiel 3

Im nächsten Beispiel erhält eine weitere mit Annotationen versehene Methode eine Bean Act als Eingabeparameter und übernimmt die Ausführung einer Anweisung UPDATE für eine Datenbank. Die Werte in der Anweisung stammen aus Eigenschaften der Bean. Die Methode gibt einen Aktualisierungszähler zurück.

@Update(sql="update ACT set ACTKWD = :actKwd, ACTDESC = :actDesc where ACTNO = :actNo")
  int updateAct(Act a);

Beim Ausführen der Anweisung UPDATE werden von pureQuery Übereinstimmungen der Parameter in der Anweisung UPDATE mit Namen der get()-Methoden in der Bean, den Namen von Eigenschaften in der Bean und dann get(String) gesucht. Beispiel: Für den Parameter mit dem Namen actKwd wird die Bean von pureQuery zuerst nach einer Methode getActKwd() durchsucht. Wird keine solche Methode gefunden, wird von pureQuery eine Eigenschaft mit dem Namen "actKwd" gesucht. Wird keine solche Eigenschaft gefunden, wird String "actKwd" von pureQuery in der Methode get(String) der Bean übergeben, falls durch die Bean eine solche Methode definiert ist.


Feedback