IntelliJ IDEA - Java代码中SQL语法的突出显示

时间:2015-06-10 10:19:42

标签: java sql intellij-idea syntax-highlighting

我使用IntelliJ 13作为项目的IDE,通过Spring的JDBC模板与DB进行通信。当我在Java中使用代码片段时,如下所示:

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

其中getJdbcTemplate()返回初始化的JdbcTemplate对象,IDE对SQL语句有正确的语法高亮显示(您可以在下面的代码段中看到它):

.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>

但是,当我使用另一种方法时,由我创建:

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

用于相同的查询:

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

没有语法突出显示SQL语句。 您是否知道如何为不是JdbcTemplate或java.sql接口的方法参数的Java stings启用SQL staments的语法高亮?

1 个答案:

答案 0 :(得分:25)

您可以通过1)设置2)注释和/或3)评论来完成此操作。对于其中任何一个,您必须启用(捆绑的)IntelliLang插件。

<强>设置

您可以添加一个设置,说明某个特定方法的参数属于某种语言&#39; (例如SQL。)

  1. 打开设置( Ctrl + Alt + S / ) &GT;编辑&gt;语言注射
  2. 点击右侧的添加按钮,然后选择Java Parameter
  3. 语言注入设置对话框中,在ID字段中选择SQL(或所需语言)
    • 您还可以指定特定的SQL方言,例如MySQLOracle等。
  4. 在&#34;类方法&#34;字段,输入要标识为采用SQL参数的方法。您可以通过省略号按钮enter image description here打开类浏览器/搜索窗口
    • 您可以从代码或库中选择类
  5. 如果您的方法有多个参数,您可以在对话框中选择参数: enter image description here
  6. 现在,当您使用该方法时,IntelliJ IDEA将自动应用语言注入: enter image description here

    <强>注解

    您可以将方法参数(或变量或字段)注释为特定语言类型。默认情况下,IntelliJ IDEA将使用IntelliJ IDEA附带的org.intellij.lang.annotations.Language中的annotations.jar注释。它位于<installDirectory>/redist/annotations.jar或maven中心:g:"com.intellij" AND a:"annotations"注意:maven中心的最新jar来自版本12.它拥有您需要的一切。在v14中添加了一个非相关的注释我今天将罐子从v13和v14上传到maven central(因为我过去曾经这样做,并且有意更新它们。)但需要几天的时间来处理通过系统。

    将注释JAR添加到类路径中。然后将您的方法的参数注释为SQL。请注意,当您键入语言类型时,代码完成将起作用:

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

    我喜欢这个注释,因为即使对于非IntelliJ IDEA用户,它也让他们知道String应该是有效的SQL,XML,CSS或其他什么。您还可以注释变量或字段: enter image description here

    如果需要,您可以更改要在设置中使用的注释( Ctrl + Alt + S / )&gt;编辑&gt;语言注入&gt;高级

    <强>注释

    作为注释的替代方法,您可以使用注释。 (我不记得何时添加。所以它可能不在v13中)​​。据我所知,通过注释进行语言注入仅适用于变量和字段。它不适用于参数。例如: enter image description here

    P.S。请参阅帮助主题帮助&gt;手册&gt;一般指南&gt;使用语言注入(可用online here)和帮助&gt;手册&gt;语言和框架 - 特定指南&gt; IntelliLang (可用online here)获取更多信息。