-2
我在开发期间想知道哪一种在Spring中更高效PreparedStatementSetter和PreparedStatementCreator?
哪一种更有效率?PreparedStatementSetter(Object)和PreparedStatementCreator(Object)在Spring框架中安全吗?
我在开发期间想知道哪一种在Spring中更高效PreparedStatementSetter和PreparedStatementCreator?
哪一种更有效率?PreparedStatementSetter(Object)和PreparedStatementCreator(Object)在Spring框架中安全吗?
您可以同时使用两者。 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;
}
});
我宁愿通过一份声明中SQL查询和使用PreparedStatementSetter的设定参数的值,因为这将减少时间/内存支出创造PreparedStatementCreator。
int r = jdbcTemplate.update(SQL_INSERT, new PreparedStatementSetter() {};
我很怀疑你能分辨出不同。性能将完全由与数据库的通信和访问计划性能决定。使用哪个更方便*。谨防过早优化。 – Andreas
内部总是会有一个'PreparedStatement'被使用。除非您正在编写一些需要额外逻辑的复杂查询,否则您不需要自己动手。否则,只需使用'query(String,...)'方法。 –