The*_*Cat 7 java jdbc spring-jdbc
我试图找到一种简单的方法来处理Stored Procedures/SQL返回多个结果集.我一直在使用该SimpleJdbcOperations#queryForList()方法,但这只会返回第一个结果集作为a 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;
}
};
Run Code Online (Sandbox Code Playgroud)
我不确定如何使用该方法,或者如何处理ResultSet以获取我的通用List<Map<String, Object>>s.
我设法Set<ResultSet>使用这个代码,
private Set<ResultSet> executeProcedure(final String sql)
{
return jdbc.execute(new CallableStatementCreator() {
@Override
public CallableStatement createCallableStatement(Connection con) throws SQLException
{
return con.prepareCall(sql);
}
}, new CallableStatementCallback<Set<ResultSet>>() {
@Override
public Set<ResultSet> doInCallableStatement(CallableStatement cs) throws SQLException
{
Set<ResultSet> results = new HashSet<>();
boolean resultsAvailable = cs.execute();
while (resultsAvailable)
{
results.add(cs.getResultSet());
resultsAvailable = cs.getMoreResults();
}
return results;
}
});
}
Run Code Online (Sandbox Code Playgroud)
只是看看将 a 翻译ResultSet成List<Map<String, Object>>。
| 归档时间: |
|
| 查看次数: |
13611 次 |
| 最近记录: |