Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中添加多行字符串?_Java_Sql - Fatal编程技术网

如何在Java中添加多行字符串?

如何在Java中添加多行字符串?,java,sql,Java,Sql,如何使长查询更具可读性 例如,我有一个: String query = "SELECT CASE WHEN EXISTS (SELECT * FROM users WHERE username = 'username' AND user_password = crypt('password', user_password)) THEN 'match' ELSE 'differ' END"; 而且它完全不可读,有什么方法可以美化它吗?转到Java 13+。这是有原因的 或者使

如何使长查询更具可读性

例如,我有一个:

String query = "SELECT CASE WHEN EXISTS (SELECT * FROM users WHERE username = 'username' AND user_password = crypt('password', user_password)) THEN 'match' ELSE 'differ' END";

而且它完全不可读,有什么方法可以美化它吗?

转到Java 13+。这是有原因的


或者使用一些。

移动到Java 13+。这是有原因的


或者使用一些。由于Java 15,您可以使用:

字符串查询= 选择案例 什么时候 存在 选择* 来自用户 哪里 用户名='username' 和user\u password=crypt'password',user\u password 然后“匹配” 否则“不同” 终止 ;
自Java 15以来,您可以使用:

字符串查询= 选择案例 什么时候 存在 选择* 来自用户 哪里 用户名='username' 和user\u password=crypt'password',user\u password 然后“匹配” 否则“不同” 终止 ; 如果您不习惯混合SQL和JAVA,可以将SQL查询放在.SQL文件中。并在需要时获取此文本

public class QueryUtil {
    static public String getQuery(String fileName) throws IOException {
        Path path = Paths.get("src/test/resources//" + fileName + ".sql");
        return Files.readAllLines(path).get(0);
    }
}
如果可以混合使用SQL和JAVA,那么可以从JDK15开始使用文本块

您还可以使用从数据库生成Java代码,这有很多好处

如果您不习惯混合SQL和JAVA,可以将SQL查询放在.SQL文件中。并在需要时获取此文本

public class QueryUtil {
    static public String getQuery(String fileName) throws IOException {
        Path path = Paths.get("src/test/resources//" + fileName + ".sql");
        return Files.readAllLines(path).get(0);
    }
}
如果可以混合使用SQL和JAVA,那么可以从JDK15开始使用文本块

您还可以使用从数据库生成Java代码,这有很多好处

假设您不能迁移到8以上版本的Java,或者即使可以,到目前为止,最好的解决方案是使用。对于Java来说,它几乎可以归结为,或。jOOQ,可能还有Hibernate,我还没有使用过它,所以不能说,抱歉,它允许您使用流畅的编程接口,这与现有的Java代码样式和模式非常一致

使用ORM的另一个特殊优势是,除了在设置函数中更改SQL方言外,您还可以非常轻松地更改使用的DB引擎,而无需更改您编写的Java代码。请参阅。

假设您无法升级到8以上版本的Java,或者即使可以,到目前为止,最好的解决方案是使用。对于Java来说,它几乎可以归结为,或。jOOQ,可能还有Hibernate,我还没有使用过它,所以不能说,抱歉,它允许您使用流畅的编程接口,这与现有的Java代码样式和模式非常一致

使用ORM的另一个特殊优势是,除了在设置函数中更改SQL方言外,您还可以非常轻松地更改使用的DB引擎,而无需更改您编写的Java代码。请参阅。

您可以使用并获得多种其他好处,如类型安全、自动完成、轻松映射和强大的支持

到目前为止,您已经在多个项目中使用过它,并且在Kotlin Exposed等竞争对手中也使用过它,但它总是回到JOOQ。

您可以使用它并获得多种其他好处,如类型安全、自动完成、轻松映射和强大的支持


到目前为止,我们已经在多个项目中使用了它,还有像Kotlin这样的竞争对手,但总是回到JOOQ。

有一个库。它有助于用类似Java的语法编写查询。如果你想要这样的东西,请检查链接。美丽是主观的。如果你没有像下面接受的答案那样使用Java15,你可以在运行时从存储在应用程序资源文件夹中的SQL文件中加载它们。您甚至可以使用反射和注释将它们注入字符串变量。它不完全与您的代码内联,但SQL文件中的SQL看起来很棒:有一个库。它有助于用类似Java的语法编写查询。如果你想要这样的东西,请检查链接。美丽是主观的。如果你没有像下面接受的答案那样使用Java15,你可以在运行时从存储在应用程序资源文件夹中的SQL文件中加载它们。您甚至可以使用反射和注释将它们注入字符串变量。它不完全与您的代码内联,但SQL文件中的SQL看起来很棒:这太棒了。我很快就会转到Java15,这太棒了。我可能迟早会转到Java 15。我会使该路径对象相对于运行时类路径而不是源子目录。我会使该路径对象相对于运行时类路径而不是源子目录。