gpt4 book ai didi

Java - 如何格式化 SQL 语句而不受到 Java 字符串不变性的影响?

转载 作者:行者123 更新时间:2023-12-01 13:00:44 25 4
gpt4 key购买 nike

例如,我想创建以下 SQL SELECT 语句以提高 JDBC 的可读性:

ResultSet result = statement.executeQuery(
"SELECT " +
"table1.*, " +
"table2.someColumn " +
"FROM " +
"table1 " +
"LEFT JOIN " +
"table2 " +
"ON " +
"table1.column1 = table2.column2 " +
"WHERE " +
"date > today");

基本上通过格式化 SQL 命令,尤其是较长的命令,可以使编码时更容易阅读。缺点是每一行都是一个不可变字符串的实例,这会带来性能和内存损失。 是的,我可以使用 StringBuffer,但这会使 SQL 代码再次变得不可读,就像我有一个又大又长的 SQL 行一样。

是的,在这种情况下,成本只有一次,但在某些情况下,我需要包含参数。加“?”很棒,并且再次最小化了字符串不可变问题,但在某些情况下,SQL 命令是动态生成的,这将导致 SQL 命令略有不同(其中无法使用参数)。

有没有一种方法可以在 Java 中编写此代码并保持代码格式,而无需付出字符串不可变性的代价(并且不使用 StringBuffer)。

注意:由于其他原因,我也无法将其写入文件。

最佳答案

我认为,无论如何,当您使用 + 时,您都会在幕后获得 StringBuilder/StringBuffer 。据官方Javadoc on String:

String concatenation is implemented through the StringBuilder(or StringBuffer) class and its append method.

关于Java - 如何格式化 SQL 语句而不受到 Java 字符串不变性的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23531261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com