Spring中的PreparedStatementSetter和PreparedStatementCreator哪个更高效?

sou*_*use 0 java database spring jsp frameworks

我在开发过程中想知道

Spring框架中PreparedStatementSetter(Object)和PreparedStatementCreator(Object)哪个更高效、更安全?

Rah*_*hak 5

您可以结合使用两者。PreparedStatementCreator 创建一个PreparedStatement 对象。然后PreparedStatementSetter设置参数值。

String machaceksName = (String) jdbcTemplate.query(new PreparedStatementCreator() {
  public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
    return connection
        .prepareStatement("select first_name from customer where last_name like ?");
  }
}, new PreparedStatementSetter() {
  public void setValues(PreparedStatement preparedStatement) throws SQLException {
    preparedStatement.setString(1, "Mach%");
  }
}, new ResultSetExtractor() {
  public Object extractData(ResultSet resultSet) throws SQLException, DataAccessException {
    if (resultSet.next()) {
      return resultSet.getLong(1);
    }
    return null;
  }
});
Run Code Online (Sandbox Code Playgroud)

我更愿意传递一个Prepared Statement SQL查询并使用PreparedStatementSetter来设置参数值,因为它将最大限度地减少创建PreparedStatementCreator的时间/内存消耗。

 int r = jdbcTemplate.update(SQL_INSERT, new PreparedStatementSetter() {};
Run Code Online (Sandbox Code Playgroud)