如何将Java字符串格式化为SQL语法?

stu*_*pid 4 java sql code-formatting string-formatting

我已经搜索了该站点,但没有找到我真正需要的。我有一条SQL语句

String unformattedSQL = "select id, name, address, zip    from   schema123.person  where name like '%stu%'";
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种formatSQL(sqlString)可以给我原始SQL语句的格式化版本的方法,例如

String formattedSQL = formatSQL(unformatted);
System.out.println(formattedSQL);
Run Code Online (Sandbox Code Playgroud)

将给我以下文字(带有正确的缩进)

SELECT id, name, 
       address, zip 
FROM schema123.person 
WHERE name LIKE '%stu%'
Run Code Online (Sandbox Code Playgroud)

原始的SQL语句实际上很长,并且是由另一种方法动态生成的(我无法更改此方法),因此无法将SQL放入外部文件中。执行完SQL后,我需要将其放在日志文件中。我想在日志文件中格式化SQL语句。

做这个的最好方式是什么?并概括该问题,如何针对另一种语法(例如XML,C#等)执行此操作。也许类似于Google Code Prettify,但适用于Java ...

San*_*eev 5

您可以使用apache openJPA项目提供的SQLFormatter

  • 谢谢你的提示。它有效,但不像我预期的那样。SQLFormatter 仅在原始 SQL 字符串或多或少格式良好时才有效。但就我而言,查询可能非常难看,即不一致的缩进、多级子查询、冒号后的空行。我需要以 Eclipse 格式化源代码的方式来解决这个问题。此外,如果有可能定义格式规则,那将是最好的。 (2认同)