2015-06-10 12 views
11

Ich verwende IntelliJ 13 als IDE für ein Projekt, wo die Kommunikation mit DB über Spring JDBC-Vorlage erfolgt. Wenn ich Code-Fragmente in Java wie die folgenden:IntelliJ IDEA - Syntax Hervorhebung von SQL In Java Code

getJdbcTemplate().queryForObject("SELECT CONVERT(VARCHAR(255), NEWID())", String.class); 

wo getJdbcTemplate() zurückkehrt JdbcTemplate Objekt initialisiert hat die IDE richtige Syntax für die SQL-Anweisung markiert (Sie es auf dem Snippet unten sehen):


.code {font-family: Monospace} 
 
.db-stmt {background: #EDFCED} 
 
.db-keyword {color: #000080; font-weight: bold;} 
 
.db-column {color: #7D0C8D; font-weight: bold;} 
 
.db-number {color: #0000FF;} 
 
.java-class {color: #39008E; font-weight: bold;}
<span class="code">getJdbcTemplate().queryForObject("<span class="db-stmt"><span class="db-keyword">SELECT CONVERT</span>(<span class="db-keyword">VARCHAR</span>(<span class="db-number">255</span>), NEWID())</span>", String.<span class="java-class">class</span>);</span>


Allerdings, wenn ich eine andere Methode verwenden, erstellt von mir:

protected String queryForString(String sql, Object... args) { 
    try { 
     return getJdbcTemplate().queryForObject(sql, String.class, args); 
    } 
    catch (RuntimeException e) { 
     return null; 
    } 
} 

für die gleiche Abfrage:

queryForString("SELECT CONVERT(VARCHAR(255), NEWID())"); 

gibt es keine Syntax-Hervorhebung der SQL-Anweisung. Wissen Sie, wie Sie die Syntax-Hervorhebung von SQL-Stämmen für Java-Stiche aktivieren können, die keine Argumente für Methoden von JdbcTemplate oder java.sql interfaces sind?

+1

Sie können versuchen, einen Teil der SQL-Abfrage auszuwählen, drücken Sie die ALT-EINGABETASTE und wählen Sie Sprachreferenz/SQL einlesen aus. Nicht sicher, ob es für Argumente der gegebenen Methode vorübergehend oder dauerhaft sein wird ... –

+0

OK, ich wusste nicht über diese Möglichkeit.Funktioniert für mich jetzt, aber ich hoffe, dass es eine dauerhafte Lösung dafür gibt (wie einige Einstellungen oder Anmerkungen ...) –

Antwort

20

Sie können dies über 1) eine Einstellung 2) eine Anmerkung und/oder 3) einen Kommentar tun. Für diese muss das (gebündelte) IntelliLang Plugin aktiviert sein.

Einstellung

Sie eine Einstellung hinzufügen können, zu sagen, dass eine bestimmte Methode der Parameter eines bestimmten 'Sprache' ist (SQL zum Beispiel.)

  1. Öffnen Einstellung (Ctrl + Alt + S/,)> Editor> Spracheingaben
  2. Auf der rechten Seite klicken Sie auf die Schaltfläche Hinzufügen und wählen Sie Java Parameter
  3. Im Sprache Injection Einstellungen Dialog wählen SQL (oder die gewünschte Sprache) im ID-Feld
    • Sie können auch eine spezifische SQL angeben Dialekt wie MySQL, Oracle usw.
  4. In der „Klassenmethoden“ Feld, geben Sie die Methode, die Sie als Einnahme eines SQL Parameter identifizieren möchten.Sie können eine Klasse-Browser/Suchfenster öffnen über die Ellipsen-Schaltfläche enter image description here
    • Sie können Klassen wählen aus dem Code oder aus Bibliotheken
  5. Wenn Ihre Methode mehrere Parameter nimmt, können Sie den Parameter in der Auswahl Dialog: enter image description here

Jetzt IDEA IntelliJ wird automatisch die Sprache Injektion anwenden, wenn Sie diese Methode verwenden: enter image description here

Annotations

Sie können eine Methode Parameter (oder variable oder Feld) mit Anmerkungen versehen, wie einer bestimmten Sprache Typ sein. IntelliJ IDEA verwendet standardmäßig die org.intellij.lang.annotations.Language-Annotation, die in annotations.jar enthalten ist, die mit IntelliJ IDEA enthalten ist. Es befindet sich unter <installDirectory>/redist/annotations.jar oder in maven central: g:"com.intellij" AND a:"annotations" () Hinweis: Das neueste Glas in Maven Central ist von Version 12. Es hat alles, was Sie brauchen. Eine nicht verwandte Anmerkung wurde in V14 hinzugefügt. Ich werde die Gläser von V13 hochladen und v14 zentrale heute Maven (wie ich derjenige waren in der Vergangenheit zu tun so und haben die Bedeutung gewesen, sie zu aktualisieren). Aber es dauert ein paar Tage durch das System zu verarbeiten.)

die Anmerkungen JAR hinzufügen zu deinem Klassenpfad. Dann notieren Sie den Parameter Ihrer Methode als SQL. Beachten Sie, dass die Code-Vervollständigung funktioniert, wenn Sie den Sprachtyp eingeben:

public void checkDatabase(String foo, @Language("SQL")String sql, String bar) 

Ich mag die Anmerkung, da auch für Nicht-IntelliJ IDEA-Nutzer, es lässt sie wissen, dass ein String gültige SQL sein sollte, XML, CSS, oder was auch immer. Sie können auch eine Variable mit Anmerkungen versehen oder Feld: enter image description here

Falls gewünscht, können Sie die Anmerkung ändern in Einstellung zu verwenden (Ctrl + Alt + S/,)> Editor> Sprache Injections> Erweiterte

Kommentar

Als Alternative zu Anmerkungen können Sie einen Kommentar verwenden. (Ich kann mich nicht erinnern, wann dies hinzugefügt wurde. So kann es nicht in V13 sein). Soweit ich weiß, funktioniert die Spracheingabe über Kommentare nur für Variablen und Felder. Es funktioniert nicht für Parameter. Zum Beispiel: enter image description here

P.S. Siehe die Hilfethemen Hilfe> Anleitungen> Allgemeine Richtlinien> Verwendung von Sprache Injections (erhältlich online here) und Hilfe> Anleitungen> Sprache und Frameworks - Spezifische Leitlinien> IntelliLang (verfügbar online here) für weitere Informationen.

+0

Großartig! Genau danach suche ich. –

+0

Das ist schön. Gibt es eine gute Möglichkeit, dies nur während der Entwicklung zum Klassenpfad hinzuzufügen. – Ceekay

+3

Mein letzter Kommentar war zu früh. Sie können die Kommentaroption '// language = SQL' verwenden, ohne Abhängigkeiten hinzuzufügen. – Ceekay

Verwandte Themen