Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
3ff3805e
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
3ff3805e
编写于
12月 11, 2013
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed extractOutputParameters to properly extract ResultSet in all cases
Issue: SPR-11076
上级
ccafccbe
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
36 addition
and
31 deletion
+36
-31
spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java
...main/java/org/springframework/jdbc/core/JdbcTemplate.java
+19
-15
spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProvider.java
...ingframework/jdbc/core/metadata/CallMetaDataProvider.java
+17
-16
未找到文件。
spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java
浏览文件 @
3ff3805e
...
...
@@ -35,7 +35,6 @@ import java.util.HashMap;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
javax.sql.DataSource
;
import
org.springframework.dao.DataAccessException
;
...
...
@@ -1199,28 +1198,29 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
* @param resultSetParameters Parameter list of declared resultSet parameters for the stored procedure
* @return Map that contains returned results
*/
@SuppressWarnings
(
"rawtypes"
)
protected
Map
<
String
,
Object
>
extractReturnedResults
(
CallableStatement
cs
,
List
updateCountParameters
,
List
resultSetParameters
,
int
updateCount
)
protected
Map
<
String
,
Object
>
extractReturnedResults
(
CallableStatement
cs
,
List
<
SqlParameter
>
updateCountParameters
,
List
<
SqlParameter
>
resultSetParameters
,
int
updateCount
)
throws
SQLException
{
Map
<
String
,
Object
>
returnedResults
=
new
HashMap
<
String
,
Object
>();
int
rsIndex
=
0
;
int
updateIndex
=
0
;
boolean
moreResults
;
if
(!
skipResultsProcessing
)
{
if
(!
this
.
skipResultsProcessing
)
{
do
{
if
(
updateCount
==
-
1
)
{
if
(
resultSetParameters
!=
null
&&
resultSetParameters
.
size
()
>
rsIndex
)
{
SqlReturnResultSet
declaredRsParam
=
(
SqlReturnResultSet
)
resultSetParameters
.
get
(
rsIndex
);
SqlReturnResultSet
declaredRsParam
=
(
SqlReturnResultSet
)
resultSetParameters
.
get
(
rsIndex
);
returnedResults
.
putAll
(
processResultSet
(
cs
.
getResultSet
(),
declaredRsParam
));
rsIndex
++;
}
else
{
if
(!
skipUndeclaredResults
)
{
if
(!
this
.
skipUndeclaredResults
)
{
String
rsName
=
RETURN_RESULT_SET_PREFIX
+
(
rsIndex
+
1
);
SqlReturnResultSet
undeclaredRsParam
=
new
SqlReturnResultSet
(
rsName
,
new
ColumnMapRowMapper
());
logger
.
info
(
"Added default SqlReturnResultSet parameter named "
+
rsName
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Added default SqlReturnResultSet parameter named '"
+
rsName
+
"'"
);
}
returnedResults
.
putAll
(
processResultSet
(
cs
.
getResultSet
(),
undeclaredRsParam
));
rsIndex
++;
}
...
...
@@ -1228,16 +1228,18 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
}
else
{
if
(
updateCountParameters
!=
null
&&
updateCountParameters
.
size
()
>
updateIndex
)
{
SqlReturnUpdateCount
ucParam
=
(
SqlReturnUpdateCount
)
updateCountParameters
.
get
(
updateIndex
);
SqlReturnUpdateCount
ucParam
=
(
SqlReturnUpdateCount
)
updateCountParameters
.
get
(
updateIndex
);
String
declaredUcName
=
ucParam
.
getName
();
returnedResults
.
put
(
declaredUcName
,
updateCount
);
updateIndex
++;
}
else
{
if
(!
skipUndeclaredResults
)
{
String
undeclaredUcName
=
RETURN_UPDATE_COUNT_PREFIX
+
(
updateIndex
+
1
);
logger
.
info
(
"Added default SqlReturnUpdateCount parameter named "
+
undeclaredUcName
);
returnedResults
.
put
(
undeclaredUcName
,
updateCount
);
if
(!
this
.
skipUndeclaredResults
)
{
String
undeclaredName
=
RETURN_UPDATE_COUNT_PREFIX
+
(
updateIndex
+
1
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Added default SqlReturnUpdateCount parameter named '"
+
undeclaredName
+
"'"
);
}
returnedResults
.
put
(
undeclaredName
,
updateCount
);
updateIndex
++;
}
}
...
...
@@ -1281,8 +1283,10 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
else
{
String
rsName
=
outParam
.
getName
();
SqlReturnResultSet
rsParam
=
new
SqlReturnResultSet
(
rsName
,
new
ColumnMapRowMapper
());
returnedResults
.
putAll
(
processResultSet
(
cs
.
getResultSet
(),
rsParam
));
logger
.
info
(
"Added default SqlReturnResultSet parameter named "
+
rsName
);
returnedResults
.
putAll
(
processResultSet
((
ResultSet
)
out
,
rsParam
));
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Added default SqlReturnResultSet parameter named '"
+
rsName
+
"'"
);
}
}
}
else
{
...
...
spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProvider.java
浏览文件 @
3ff3805e
...
...
@@ -24,7 +24,8 @@ import org.springframework.jdbc.core.SqlParameter;
/**
* Interface specifying the API to be implemented by a class providing call metadata.
* This is intended for internal use by Spring's
*
* <p>This is intended for internal use by Spring's
* {@link org.springframework.jdbc.core.simple.SimpleJdbcCall}.
*
* @author Thomas Risberg
...
...
@@ -74,15 +75,15 @@ public interface CallMetaDataProvider {
/**
* Provide any modification of the catalog name passed in to match the meta data currently used.
* The returned value will be used for meta data lookups. This could include altering the case
used
* or providing a base catalog if none is provided.
* The returned value will be used for meta data lookups. This could include altering the case
*
used
or providing a base catalog if none is provided.
*/
String
metaDataCatalogNameToUse
(
String
catalogName
)
;
/**
* Provide any modification of the schema name passed in to match the meta data currently used.
* The returned value will be used for meta data lookups. This could include altering the case
used
* or providing a base schema if none is provided.
* The returned value will be used for meta data lookups. This could include altering the case
*
used
or providing a base schema if none is provided.
*/
String
metaDataSchemaNameToUse
(
String
schemaName
)
;
...
...
@@ -94,8 +95,8 @@ public interface CallMetaDataProvider {
String
parameterNameToUse
(
String
parameterName
);
/**
* Create a default out parameter based on the provided meta data.
This is used when no
* explicit parameter declaration has been made.
* Create a default out parameter based on the provided meta data.
*
This is used when no
explicit parameter declaration has been made.
* @param parameterName the name of the parameter
* @param meta meta data used for this call
* @return the configured SqlOutParameter
...
...
@@ -103,8 +104,8 @@ public interface CallMetaDataProvider {
SqlParameter
createDefaultOutParameter
(
String
parameterName
,
CallParameterMetaData
meta
);
/**
* Create a default inout parameter based on the provided meta data.
This is used when no
* explicit parameter declaration has been made.
* Create a default inout parameter based on the provided meta data.
*
This is used when no
explicit parameter declaration has been made.
* @param parameterName the name of the parameter
* @param meta meta data used for this call
* @return the configured SqlInOutParameter
...
...
@@ -112,8 +113,8 @@ public interface CallMetaDataProvider {
SqlParameter
createDefaultInOutParameter
(
String
parameterName
,
CallParameterMetaData
meta
);
/**
* Create a default in parameter based on the provided meta data.
This is used when no
* explicit parameter declaration has been made.
* Create a default in parameter based on the provided meta data.
*
This is used when no
explicit parameter declaration has been made.
* @param parameterName the name of the parameter
* @param meta meta data used for this call
* @return the configured SqlParameter
...
...
@@ -121,26 +122,26 @@ public interface CallMetaDataProvider {
SqlParameter
createDefaultInParameter
(
String
parameterName
,
CallParameterMetaData
meta
);
/**
* Get the name of the current user.
Useful for meta data lookups etc.
* Get the name of the current user. Useful for meta data lookups etc.
* @return current user name from database connection
*/
String
getUserName
();
/**
* Does this database support returning
resultsets that should be retrieved with the JDBC call
* Does this database support returning
ResultSets that should be retrieved with the JDBC call.
* {@link java.sql.Statement#getResultSet()}
*/
boolean
isReturnResultSetSupported
();
/**
* Does this database support returning
results
ets as ref cursors to be retrieved with
* Does this database support returning
ResultS
ets as ref cursors to be retrieved with
* {@link java.sql.CallableStatement#getObject(int)} for the specified column.
*/
boolean
isRefCursorSupported
();
/**
* Get the {@link java.sql.Types} type for columns that return
resultsets as ref cursors if this feature
* is supported.
* Get the {@link java.sql.Types} type for columns that return
ResultSets as ref cursors
* i
f this feature i
s supported.
*/
int
getRefCursorSqlType
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录