IntelliJ IDEA – Java代码中SQL语法的突出显示
我使用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;}
getJdbcTemplate().queryForObject("SELECT CONVERT(VARCHAR(255), NEWID())", String.class);
但是,当我使用另一种方法时,由我创建:
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)设置2)注释和/或3)注释来完成此操作。 对于其中任何一个,您必须启用(捆绑) IntelliLang
插件。
设置
您可以添加一个设置来表示特定方法的参数是某种“语言”(例如SQL)。
- 打开设置( Ctrl + Alt + S / ⌘ , )>编辑器>语言注入
- 在右侧,单击“添加”按钮并选择“
Java Parameter
- 在“ 语言注入设置”对话框中,在“ID”字段中选择“
SQL
(或所需语言)- 您还可以指定特定的SQL方言,例如
MySQL
,Oracle
等。
- 您还可以指定特定的SQL方言,例如
- 在“类方法”(Class Methods)字段中,输入要标识为采用
SQL
参数的方法。 您可以通过省略号按钮打开类浏览器/搜索窗口- 您可以从代码或库中选择类
- 如果您的方法采用多个参数,则可以在对话框中选择参数:
现在,当您使用该方法时,IntelliJ IDEA将自动应用语言注入:
注释
您可以将方法参数(或变量或字段)注释为特定语言类型。 默认情况下,IntelliJ IDEA将使用IntelliJ IDEA org.intellij.lang.annotations.Language
annotations.jar中的org.intellij.lang.annotations.Language
注释。 它位于
或maven central: g:“com.intellij”AND a:“annotations” ( 注意:maven central中的最新jar来自版本12.它拥有您需要的一切在v14中添加了一个非相关的注释。我今天将jar子从v13和v14上传到maven central(因为我过去一直是这样做的,并且有意更新它们。)但它需要通过系统处理几天。 )
将注释JAR添加到类路径中。 然后将方法的参数注释为SQL。 请注意,当您键入语言类型时,代码完成将起作用:
public void checkDatabase(String foo, @Language("SQL")String sql, String bar)
我喜欢这个注释,因为即使对于非IntelliJ IDEA用户,它也让他们知道String应该是有效的SQL,XML,CSS或其他什么。 您还可以注释变量或字段:
如果需要,您可以更改要在设置中使用的注释( Ctrl + Alt + S / ⌘ , )>编辑器>语言注入>高级
评论
作为注释的替代方法,您可以使用注释。 (我不记得这是什么时候添加的。所以它可能不在v13中)。 据我所知,通过注释进行语言注入仅适用于变量和字段。 它不适用于参数。 例如:
PS有关详细信息,请参阅帮助主题帮助>手册>一般准则>使用语言注入 ( 此处可在线获取 )和帮助>手册>语言和框架 – 特定准则> IntelliLang (可从此处在线获取)。