【发布时间】:2013-04-15 12:08:55
【问题描述】:
我试图找到一种简单的方法来处理返回多个结果集的存储过程/SQL。我一直在使用SimpleJdbcOperations#queryForList() 方法,但是这只会将第一个结果集作为List<Map<String, Object>> 返回。我需要能够获得多个结果集,理想情况下是Collection 或List<Map<String, Object>> 之类的。我正在编写的程序是一个中间件组件,所以我不知道 SQL 将是什么,也不知道结果集的形式。
我想我必须使用JdbcOperations 类,它可以让我访问更多方法,包括execute(CallableStatementCreator csc, CallableStatementCallback<T> action),但现在我被卡住了。
CallableStatementCallback<T> callback = new CallableStatementCallback<T>() {
@Override
public T doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException
{
boolean results = cs.execute(request);
while(results)
{
ResultSet result = cs.getResultSet();
results = cs.getMoreResults();
}
return null;
}
};
我不太确定如何使用该方法,或者如何使用ResultSet 来获得我的通用List<Map<String, Object>>s。
【问题讨论】:
-
A
ResultSet包含在数据库上直接执行 SQL 后会找到的行,它永远不会返回List<Map<X,Y>>。您必须使用ResultSet中的字段自己生成它,您可以使用 getter 访问它。 -
我应该能够使用
hasNext()和getObject()迭代ResultSet? -
您将使用
while循环和next()并通过各种 getter 获得不同的行字段。 -
认为我只能使用
getObject,因为我不知道ResultSet会是什么。 -
你不是写SQL的人吗?我认为您将不得不将其视为某个点。
标签: java jdbc spring-jdbc