gpt4 book ai didi

java - IntelliJ IDEA - SQL Inside Java 代码的语法高亮

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:56 27 4
gpt4 key购买 nike

我正在使用 IntelliJ 13 作为一个项目的 IDE,其中与 DB 的通信是通过 Spring 的 JDBC 模板完成的。当我在 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 接口(interface)方法参数的 Java 字符串启用 SQL 语句的语法高亮显示吗?

最佳答案

您可以通过以下任意组合来做到这一点:

  1. 设置
  2. 注释
  3. 评论。

对于其中任何一个,您必须拥有(捆绑)IntelliLang插件已启用。

通过设置

您可以添加一个设置来说明特定方法的参数是某种“语言”(例如 SQL)。

  1. 打开设置(Ctrl+Alt+S/,) > 编辑器 > 语言注入(inject)
  2. 在右侧,单击添加按钮并选择 Java Parameter
  3. 语言注入(inject)设置对话框中,选择SQL (或所需的语言)在 ID 字段中
    • 您还可以指定特定的 SQL 方言,例如 MySQL , Oracle
  4. 在“类方法”字段中,输入您要标识为采用 SQL 的方法范围。您可以通过省略号按钮打开类浏览器/搜索窗口 enter image description here
    • 您可以从您的代码或库中选择类
  5. 如果您的方法需要多个参数,您可以在对话框中选择参数:

enter image description here

现在,当您使用该方法时,IntelliJ IDEA 将自动应用语言注入(inject):

enter image description here

通过注解

您可以将方法参数(或变量或字段)注释为特定语言类型。默认情况下,IntelliJ IDEA 将使用 org.intellij.lang.annotations.Language annotations.jar 中的注释包含在 IntelliJ IDEA 中。它位于 <installDirectory>/redist/annotations.jar或者在 Maven 中心,org.jetbrains:annotations

注意:还有一些非官方上传的带有不同组 ID 的注释 jar,包括(但不限于)“com.intellij”。这是因为多年前,JetBrains 并没有将它们上传到 Maven Central。所以一些社区成员这样做了,但是在不同的组 ID 下。在过去的几年里,JetBrains 一直在使用(官方)组 ID“org.jetbrains”上传它们。这是其他工件在其 POM(例如 Kotlin POM)中使用的,因此应该使用。

将注释 JAR 添加到您的类路径中。 (在大多数情况下,JAR 只需要在类路径上进行开发,而在运行时不需要。因此您可以使用“提供”的 maven <scope>。)然后将您的方法的参数注释为 SQL。请注意,当您键入语言类型时,代码完成将起作用:

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

我喜欢注释,因为即使对于非 IntelliJ IDEA 用户,它也让他们知道字符串应该是有效的 SQL、XML、CSS 或其他任何东西。您还可以注释变量或字段:

enter image description here

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

通过评论

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

enter image description here

有关详细信息,请参阅 IntelliJ IDEA user guide

关于java - IntelliJ IDEA - SQL Inside Java 代码的语法高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30753512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com