什么是Perl的qq运算符的Java等价物?

jep*_*rro 6 java string syntax perl operators

我有一个非常长的字符串,其中包含许多新行(这是一个非常长的SQL语句).

当我用换行符分解它时,SQL更容易阅读.但有时,我需要从代码中复制sql语句以粘贴到sql developer中.

在Perl中,我总是喜欢qq运算符,您可以使用它来代替双引号:

你用它是这样的:

$myString = qq{       
                      SELECT * 
                      FROM table_a a
                      JOIN table_b b ON a.id = b.id ... etc
                };
Run Code Online (Sandbox Code Playgroud)

JAVA中是否有等价物?我发现必须像这样分解字符串中的字符串很尴尬:

String myString = "    SELECT *  " + 
                  "    FROM table_a a " + 
                  "    JOIN table_b b ON a.id = b.id ... etc ";
Run Code Online (Sandbox Code Playgroud)

并且很难从代码中复制SQL语句.我最终不得不删除所有引号和+

是否有Java等价物?或者是否有更好的技巧将可读的,可复制的SQL语句放在Java代码中?

bak*_*kal 5

Java中的多行字符串

是否有Java等价物?

在撰写本文时,我不这么认为.但是,有人建议在Java中包含多行字符串.


或者是否有更好的技巧将可读的,可复制的SQL语句放在Java代码中?

通过连接将参数放入SQL查询中并不是一个好主意.有一些类和API可以帮助您形成查询.

"查询包装"

包装可以增强可读性,例如JDOQL(JDO),您可以通过使用创建查询setWhere(),setLimit(),setDistinct()等.

Query q = pm.newQuery (...);
q.setWhere(...);
q.setRange (...);
q.setOrdering (...);
q.setLimit(...);
q.newParameter(...); // declare a query parameter

q.execute(34.5); // execute the SQL query with a parameter
Run Code Online (Sandbox Code Playgroud)

对于JPA,您可以阅读JPQL.

如果您使用普通JDBC,您可能还会看一下PreparedStatement.