是否有任何方法可以使用Eclipse以Java字符串文字编写(复制粘贴)格式良好的SQL查询?
当我希望在Java中使用SQL查询时,我通常将它们保存在最终的字符串变量中。现在,当字符串太大时,它超出了页面宽度,我们要么必须手动将其打断(在eclipse中,转到字符串中的某个特定位置,然后输入enter,然后对结果中的每个较小部分执行该操作),要么可以在eclipse中设置格式化程序,使其每行仅允许(比如)100个字符。但字符串并没有以逻辑方式断开 我可以在sqldeveloper中很好地格式化查询(比如说),但是如果我在Java中粘贴查询,我必须手动设置所有的结束引号和是否有任何方法可以使用Eclipse以Java字符串文字编写(复制粘贴)格式良好的SQL查询?,java,eclipse,formatting,Java,Eclipse,Formatting,当我希望在Java中使用SQL查询时,我通常将它们保存在最终的字符串变量中。现在,当字符串太大时,它超出了页面宽度,我们要么必须手动将其打断(在eclipse中,转到字符串中的某个特定位置,然后输入enter,然后对结果中的每个较小部分执行该操作),要么可以在eclipse中设置格式化程序,使其每行仅允许(比如)100个字符。但字符串并没有以逻辑方式断开 我可以在sqldeveloper中很好地格式化查询(比如说),但是如果我在Java中粘贴查询,我必须手动设置所有的结束引号和+符号,使其成为一
+
符号,使其成为一个正确的Java字符串。我只想知道一种将正确格式的SQL查询副本直接粘贴到Java文件中的方法。我正在使用Eclipse
当查询的格式如下时:
SELECT
*
FROM
something
WHERE
id=4;
然后,当它粘贴到java字符串中时,我们可以将其如下所示:
"SELECT" +
" *" +
" FROM" +
" something" +
" WHERE";
id=4;
在
SQLDeveloper
中,选择查询并使用Ctrl+F7
对其进行格式化。再次选择它并使用Ctrl+Shift+F7
对其进行高级格式化,选择剪贴板
作为输出目标,按所需类型输出类型,然后单击应用
。现在,将其粘贴到Eclipse编辑器中并查看差异
我使用的是SQLDeveloper的3.1.07版。在Eclipse中,在Java>Editor>下的窗口>首选项中键入选中“粘贴到字符串文字时转义文本”复选框 它将格式化纯文本:
line1
line2
line3
致:
这是Eclipse Helios上的输出。
一个类似的问题:对于
DbVisualizer
,您可以使用Ctrl+Alt+K
将sql格式化为所需的模式。实际上这是一个非常好的问题,我经常想知道这一点。我可以给你的一个提示是使用以下方法:
//@formatter:off
private static final String QUERY =
"SELECT t.* " +
"FROM table t " +
"WHERE t.age > 18";
//@formatter:on
它不会将SQL查询转换为Java字符串文字,但可以防止Eclipse将字符串重新格式化为不可读的格式。这非常接近:如何将SQL以前导空格缩进:
如果您不介意在生成的SQL输出中添加额外的空格,这里有一个创造性的解决方案: 步骤1:粘贴 将格式化的SQL语句逐字粘贴到Java文件中 第二步:写开场白 请注意高亮显示的按钮,左边第六个。这就是很棒的“块选择模式”(Windows上的Alt-Shift-A)。它允许您在同一位置的每个选定行上写开头引号 步骤3:编写结束引号和连接 对结束引号和连接符号应用相同的技术(
+
)
步骤4:固定分号
这里不需要任何评论。我知道我来晚了,但是对于任何使用大型查询的人来说,Eclipse中的块模式可能很难使用,因为如果查询超过100行左右(取决于您的机器),它会减慢速度 我发现这个网站,它是非常简单和非常快。将代码发布到窗口中,添加前缀(“)和后缀(“+”),然后单击另存为。它会很快地为每一行添加前缀和后缀 以下是在线工具:
这是否需要额外的插件或配置?对我来说不起作用。java代码格式化程序首选项中有一个选项必须启用才能起作用。事实上,您需要在Eclipse的checkstyle首选项中选中此选项。最好提到,也可以使用Ctrl+3(Mac上的Cmd+3)和键入block selection来切换块选择(任何操作都可以)。也很有用,例如用于显示空白字符。是的,谢谢@robinst。我总是忘记Ctrl+3。我几乎无法超越Ctrl+1:-)有什么方法可以防止DbVisualizer将查询的几乎每个字都放在自己的行中吗?谢谢,我必须承认我甚至想过创建smthn(类似:)
//@formatter:off
private static final String QUERY =
"SELECT t.* " +
"FROM table t " +
"WHERE t.age > 18";
//@formatter:on
String sql =
"SELECT\n" +
" *\n" +
" FROM\n" +
" something\n" +
" WHERE\n" +
" id=4;";