有没有什么办法可以使用Eclipse在Java字符串文字中编写(复制 – 粘贴)格式良好的SQL查询?

当我希望在Java中使用SQL查询时,我通常将它们保存在最终的String变量中。 现在,当字符串太大时,它会超出页面宽度,我们要么必须手动打破它(在eclipse中,转到字符串中的特定位置,然后输入,并为每个较小的字符执行此操作部分),或者我们可以在Eclipse中设置格式化程序,每行只允许(比方说)100个字符。 但字符串不会以合乎逻辑的方式被破坏。

我可以在SQL Developer(比如说)中很好地格式化一个查询,但如果我将它粘贴到Java中,我将不得不手动设置所有的结束引号,并使用+符号使其成为正确的Java字符串。 我只是想知道如何将格式正确的SQL查询直接复制粘贴到Java文件中。 我正在使用Eclipse。

也许当查询格式如下:

 SELECT * FROM something WHERE id=4; 

然后当它粘贴在一个java字符串中时,我们就可以这样:

 "SELECT" + " *" + " FROM" + " something" + " WHERE"; id=4; 

在Eclipse中,在Java> Editor> Typing下的Window> Preferences中,选中“粘贴到字符串文字时转义文本”复选框。

它将格式化纯文本:

 line1 line2 line3 

至:

 private final String TEXT = "line1\r\n" + "line2\r\n" + "line3"; 

这是Eclipse Helios的输出。 一个类似的问题: 用引号括起来

如果您不介意生成的SQL输出中的额外空格,这是一个创造性的解决方案:

第1步:粘贴

在此处输入图像描述

将格式化的SQL语句逐字粘贴到Java文件中

第2步:写开场报价

在此处输入图像描述

注意突出显示的按钮,左起第六个。 这是令人敬畏的“块选择模式”(Windows上的Alt-Shift-A)。 它允许您在同一位置的每个选定行上写入开头报价

第3步:编写结束引号和连接

在此处输入图像描述

对结束引号和串联符号应用相同的技术( +

第4步:修复分号

在此处输入图像描述

这里不需要评论。

SQLDeveloper ,选择查询并使用Ctrl + F7进行格式化。 再次选择它并使用Ctrl + Shift + F7进行格式化,选择Clipboard作为输出目标,输出类型为所需类型,然后单击Apply 。 现在,将其粘贴到Eclipse编辑器中并查看差异。

我正在使用SQLDeveloper的3.1.07版。

实际上这是一个非常好的问题,我也常常对此感到疑惑。 我可以给你的一个提示是使用以下内容:

 //@formatter:off private static final String QUERY = "SELECT t.* " + "FROM table t " + "WHERE t.age > 18"; //@formatter:on 

它不会将SQL查询转换为Java String文字,但它使Eclipse无法重新格式化您的String,这是不可读的。

我知道我参加这个派对已经迟到了,但是对于任何使用大型查询的人来说,Eclipse中的块模式可能很难处理,因为如果你的查询超过100行,那么它会慢下来(取决于在你的机器上)。

我找到了这个网站,它非常简单,非常快。 将代码发布到窗口中,添加前缀(“)并添加后缀(”+“并单击另存为。 它会很快地为每一行添加前缀和后缀。

这是在线工具:

http://textmechanic.co/Add-Prefix-Suffix-to-Text.html

对于DbVisualizer ,您可以使用Ctrl + Alt + K将sql格式化为所需的模式。

这非常接近:如何使用前导空格粘贴SQL缩进: https : //stackoverflow.com/a/121513/1665128

 String sql = "SELECT\n" + " *\n" + " FROM\n" + " something\n" + " WHERE\n" + " id=4;";