Wie Sie den Tabellennamen in JDBI dynamisch binden

8

Ich versuche " SELECT COUNT(*) FROM :TableName; " zu verwenden, dann benutze ich in Java .bind("Tablename","MyTable") .

Aber das Ergebnis liegt immer in einfachen Anführungszeichen, das ist " SELECT COUNT(*) FROM 'MyTable'; ", gibt es eine richtige Art zu binden (vielleicht verwende ich das falsche Wort) etwas wie TableName zu .sql Datei?

    
HelloPe 13.05.2014, 03:08
quelle

2 Antworten

10

bind ist nicht für Bezeichner gedacht, sondern für Werte. Table ist ein Datenbankobjekt und sein Name ist ein Bezeichner zum Verweisen.

Daher müssen Sie die SQL-Abfragezeichenfolge explizit so konstruieren, dass sie den Tabellennamen dynamisch enthält.

Beispiel :

%Vor%

Wenn Sie dann die Anzahl oder andere Ergebnisse basierend auf einem Feldwert oder einem Ausdruck filtern möchten, können Sie sie binden.

Beispiel :

%Vor%

Sie können sehen, dass Werte für Spalten oder Ausdrücke gebunden sind, aber keine Bezeichner.

Die Funktion, nach der Sie suchen, ist @Define - hier ein Beispiel für die Verwendung:

%Vor%     
Ravinder Reddy 13.05.2014, 05:10
quelle
4
%Vor%

Vergessen Sie nicht, die Abhängigkeit für die Annotation UseStringTemplate3StatementLocator hinzuzufügen

%Vor%     
Candaş Pamukçu 27.11.2015 19:31
quelle

Tags und Links