我正在使用 StringBuilder 来构建一个很长的查询。
StringBuilder sb = new StringBuilder();
sb.append("select * from x where name = %s'");
String.format(sb.toString, "John");
什么相当于这样的东西?或者这实际上是正确的方法吗?
我正在使用 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();
}