我使用Apache DBUtils运行一个insert语句。但是,我不确定为什么我必须在这种情况下包含ResultSetHandler:
String theQuery = QueryGenerator.insertintoStats();
ResultSetHandler<Object> dummyHandler = new ResultSetHandler<Object>() {
@Override
public Object handle(ResultSet rs) throws SQLException
{
return null;
}
};
try
{
queryRunner.insert(connection, theQuery, dummyHandler, Constants.UUIDSTR.toString(), name, prevbackupTime,
curbackupTime, updStartTime, delStartTime, bkupType.toString(), rowCount);
}
catch (SQLException e)
{
LOGGER.info(theQuery.toString());
LOGGER.error("Caught exception!", e);
}
类似于使用ResultSetHandler的insertbatch
的情况。我已经使用batch
调用批处理查询。任何人都可以解释为什么我们需要insert
的结果集处理程序?
答案 0 :(得分:1)
来自文档https://commons.apache.org/proper/commons-dbutils/apidocs/:
public <T> T insert(String sql,
ResultSetHandler<T> rsh,
Object... params)
throws SQLException
rsh - 用于从ResultSet创建结果对象的处理程序 自动生成密钥。
如果您在插入时生成id
的表格中插入值,则可以将其检索回来,例如,请参阅此答案如何手动执行此操作:https://stackoverflow.com/a/1915197/947111
您需要ResultSetHandler<T> rsh
来迭代ResultSet
,该id
与已创建的vagrant halt
一起返回。