0

我使用 Apache DBUtils 运行插入语句。但是,我不确定为什么我必须在这种情况下包含 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);
        }

insertbatch使用 ResultSetHandler的情况类似。我已经诉诸于使用batchcall 进行批量查询。谁能解释为什么我们需要结果集处理程序insert

4

1 回答 1

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's 已创建。

于 2016-01-12T07:56:14.030 回答