Apache DBUtils - 为什么需要insertsethandler for Insert?

时间:2015-09-08 20:33:06

标签: sql batch-insert apache-commons-dbutils

我使用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的结果集处理程序?

1 个答案:

答案 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一起返回。