[英]Java StringBuilder with printf. Equivalent String.format
我正在使用StringBuilder生成一個很長的查詢。
StringBuilder sb = new StringBuilder();
sb.append("select * from x where name = %s'");
String.format(sb.toString, "John");
這相當於什么呢? 還是這實際上是正確的方法?
看來您正在嘗試為SQL
構建字符串。 為此,應使用PreparedStatement
。
PreparedStatement preparedStatement =
connection.prepareStatement("select * from x where name = ?");
preparedStatement.setString(1, "John");
編輯:
假設您正在使用EntityManager
,則可以使用其等效的setParameter
Query q =
entityManager.createNativeQuery("select * from x where name = ?", MyClass.class);
q.setParameter(1, "John");
這可能對您有幫助。 con
是連接
PreparedStatement preStatement = con.prepareStatement("select * from x where name = ?");
preStatement.setString(1, "John");
如果您不使用SQL,則對於常規格式的追加,可以使用Formattor
的format()
方法。
例如
/**
* Generate a string that also contains data list.
*
* @return
*/
public String toStringWithDataList() {
List<T> list = toList();
StringBuilder sb = new StringBuilder(getClass().getName());
Formatter fm = new Formatter(sb);
sb.append(toString()).append(System.lineSeparator()); // basic info,
// value list,
if (size > 0) {
sb.append("list = ");
for (int i = 0; i < list.size(); i++) {
fm.format("\n\t[%d]-th: %s", i, list.get(i));
}
sb.append(System.lineSeparator());
}
return sb.toString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.