我有一些Java代码,其中的SQL语句被写成Java字符串(请不要使用OR/M Flamewars,嵌入式SQL就是它-不是我的决定).

为了便于维护,我在几行代码中将SQL语句在语义上分解为几个串联字符串.因此,与其说:

String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";

我有点像:

String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";

这种样式使SQL更易于阅读和维护(IMHO),尤其是对于更大的查询.例如,我可以将编辑器置于"覆盖"模式,并相当轻松地修改文本.

Note that this issue generalizes beyond the particular example of SQL. Any code that is written with any vertical formatting, particularly tabular constructs, is susceptible to destruction by a pretty printer.

现在,一些项目成员使用Eclipse编辑器,当他们格式化整个源文件时,语义格式通常会被 destruct .

Is there a way to instruct Eclipse to ignore certain lines of source with respect to formatting?

我正在寻找一个类似于切换Eclipse格式化程序的特殊注释的东西.理想情况下,这样的 comments 可以配置为我们 Select 的任何内容,其他格式化程序也可以编程为尊重它:

// STOP-ECLIPSE-FORMATTING
String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";
// START-ECLIPSE-FORMATTING

显然,一种"解决方案"是让我们的团队成员标准化一些外部格式化程序,比如JalopyJIndent,但这不是这个问题的主题(而且,这也不是我在这个项目上的决定):我专门在特别的基础上寻找一种方法来避免Eclipse格式化程序.

Ideally, a solution will allow me to insert instructions for the Eclipse formatter without requiring team members using Eclipse to do any IDE reconfiguration (other than possibly choosing a formatter agnostic command comment: STOP-ECLIPSE-FORMATTINGSTOP-FORMATTING).

推荐答案

Eclipse3.6允许您通过放置特殊注释来关闭格式设置,如

// @formatter:off
...
// @formatter:on

The on/off features have to be turned "on" in Eclipse preferences: Java > Code Style > Formatter. Click on Edit, Off/On Tags, enable Enable Off/On tags.

还可以更改首选项-check out the Eclipse 3.6 docs here中的神奇字符串.

More Information

Java > Code Style > Formatter > Edit > Off/On Tags

此首选项允许您定义一个要禁用的标记和一个要启用格式化程序的标记(请参阅格式化程序配置文件中的"关闭/打开标记"选项卡):

在此处输入图像描述

您还需要启用Java格式化

Java相关问答推荐

是否可以从@ TrustMapping中删除特定方法的基路径?

将linkedHashMap扩展到Java中的POJO类

Cucumber TestNG Assert失败,出现java. lang. Numbercycle异常

Java自定义ThreadPool—暂停任务提交并取消当前排队任务

Jooq外键关系

我找不到&Quot;配置&的位置

如何才能使我的程序不会要求两次输入?

Spring和可编辑";where";@Query

为什么有两种实现来检索数组类的组件类型?

在macOS上读取文件会导致FileNotFound,即使文件存在(并且具有权限)

如何在透视表中添加对计数列的筛选?

Quarkus:运行时出现EnumConstantNotPresentException

如何在ImageIO或十二只猴子中旋转TIFF CMYK图像?

在Spring Boot JPA for MySQL中为我的所有类创建Bean时出错?

从12小时开始的日期模式

在应用getCellFormula()时,Excel引用中的文件名始终为";[1]";使用Apache POI()

Kotlin-仅替换字符串中最后一个给定的字符串

在具有Quarkus Panache的PostgreSQL中将JSON数据存储为JSONB时,会将其存储为转义字符串

如何用Micrometer&;斯普肯

在不带instanceof或switch的java中记录模式