我知道SQL Developer 可以使用高级格式选项( ++ )制作 Java 字符串,但它或 Eclipse 可以反过来吗?是否有快速命令来评估(或至少取消引用/解包)Java 字符串?CtrlShiftF7
鉴于这种:
"SELECT * " +
"FROM table " +
"ORDER BY status"
我要这个:
SELECT *
FROM table
ORDER BY status
我知道SQL Developer 可以使用高级格式选项( ++ )制作 Java 字符串,但它或 Eclipse 可以反过来吗?是否有快速命令来评估(或至少取消引用/解包)Java 字符串?CtrlShiftF7
鉴于这种:
"SELECT * " +
"FROM table " +
"ORDER BY status"
我要这个:
SELECT *
FROM table
ORDER BY status
您可以做一个简单的替换,在其中查找引号并将它们替换为空,然后对 + 符号执行相同操作。删除项目通常比添加项目更容易,因此添加引号的便利功能。
代码示例
String.replaceAll("\"", "");
String.replaceAll("+", "");
如果您希望能够在一行中完成,您可以使用正则表达式
String pattern = "[\+\"]";
// Use the following on any string you want to format.
String.replaceAll(pattern, ""));
另一种解决方案是将查询存储在 SQL 文件中并将其作为资源使用。与图像(我们不存储为 Base64 编码字符串)类似,我们可以将它们存储在我们的 Java 外部(我们应该这样做,因为它们不是 Java,它们是 SQL)
private String getTextResource(String Resource){
InputStream in = getClass().getResourceAsStream(Resource);
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = null;
ArrayList<String> lines = new ArrayList<String>();
try {
while((line = reader.readLine()) != null){
lines.add(line);
}
} catch (IOException e) {
return null;
}
return Joiner.on("\n").join(lines);
}
public float getCurrentRiskAssessmentFactor(){
String sql = getTextResource("MyComplexSQL.sql");
return db.getQueryStatment(sql).get(0);
}
使用这种技术,您可以以可测试的格式维护复杂的查询。可以在您最喜欢的 SQL 编辑器中打开和测试 sql 文件,或者(独立地)针对数据库运行。这避免了在工具之间切换时的转录错误和工作量。
我与一位开发人员一起工作,他将整个数据库访问抽象化,这样您就只能指定 SQL 资源,而不能传入原始 SQL。
另外,安装 Eclipse DTP。这将允许您直接从 Eclipse 运行查询(或至少为您提供语法高亮显示)。
http://www.eclipse.org/datatools/downloads.php
优化提示:如果这样做,可能建议对 SQL 使用某种延迟加载/缓存机制