@@ -2214,7 +2214,7 @@ configure the application context to take advantage of these annotations.
|
||||
|
||||
|
||||
[[jdbc-introduction]]
|
||||
=== Introduction to Spring Framework JDBC
|
||||
=== Introduction to Spring Framework's JDBC support
|
||||
|
||||
The value-add provided by the Spring Framework JDBC abstraction is perhaps best shown by
|
||||
the sequence of actions outlined in the table below. The table shows what actions Spring
|
||||
@@ -3826,7 +3826,7 @@ like:
|
||||
[subs="verbatim,quotes"]
|
||||
----
|
||||
new SqlParameter("in_id", Types.NUMERIC),
|
||||
new SqlOutParameter("out_first_name", Types.VARCHAR),
|
||||
new SqlOutParameter("out_first_name", Types.VARCHAR),
|
||||
----
|
||||
|
||||
The first line with the `SqlParameter` declares an IN parameter. IN parameters can be
|
||||
@@ -4141,7 +4141,7 @@ constants.
|
||||
[subs="verbatim,quotes"]
|
||||
----
|
||||
new SqlParameter("in_id", Types.NUMERIC),
|
||||
new SqlOutParameter("out_first_name", Types.VARCHAR),
|
||||
new SqlOutParameter("out_first_name", Types.VARCHAR),
|
||||
----
|
||||
|
||||
The first line with the `SqlParameter` declares an IN parameter. IN parameters can be
|
||||
@@ -4149,10 +4149,10 @@ used for both stored procedure calls and for queries using the `SqlQuery` and it
|
||||
subclasses covered in the following section.
|
||||
|
||||
The second line with the `SqlOutParameter` declares an `out` parameter to be used in the
|
||||
stored procedure call. There is also an `SqlInOutParameter` for `I` `nOut` parameters,
|
||||
stored procedure call. There is also an `SqlInOutParameter` for `InOut` parameters,
|
||||
parameters that provide an `in` value to the procedure and that also return a value.
|
||||
|
||||
For `i` `n` parameters, in addition to the name and the SQL type, you can specify a
|
||||
For `in` parameters, in addition to the name and the SQL type, you can specify a
|
||||
scale for numeric data or a type name for custom database types. For `out` parameters
|
||||
you can provide a `RowMapper` to handle mapping of rows returned from a REF cursor.
|
||||
Another option is to specify an `SqlReturnType` that enables you to define customized
|
||||
@@ -4295,8 +4295,7 @@ the supplied `ResultSet`.
|
||||
|
||||
To pass parameters to a stored procedure that has one or more input parameters in its
|
||||
definition in the RDBMS, you can code a strongly typed `execute(..)` method that would
|
||||
delegate to the superclass' untyped `execute(Map parameters)` method (which has
|
||||
`protected` access); for example:
|
||||
delegate to the untyped `execute(Map)` method in the superclass; for example:
|
||||
|
||||
[source,java,indent=0]
|
||||
[subs="verbatim,quotes"]
|
||||
@@ -4337,7 +4336,7 @@ delegate to the superclass' untyped `execute(Map parameters)` method (which has
|
||||
=== Common problems with parameter and data value handling
|
||||
|
||||
Common problems with parameters and data values exist in the different approaches
|
||||
provided by the Spring Framework JDBC.
|
||||
provided by Spring Framework's JDBC support.
|
||||
|
||||
|
||||
[[jdbc-type-information]]
|
||||
@@ -4407,11 +4406,11 @@ dependency injection.
|
||||
|
||||
jdbcTemplate.execute(
|
||||
"INSERT INTO lob_table (id, a_clob, a_blob) VALUES (?, ?, ?)",
|
||||
new AbstractLobCreatingPreparedStatementCallback(lobHandler) { # <1>
|
||||
new AbstractLobCreatingPreparedStatementCallback(lobHandler) { # <1>
|
||||
protected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException {
|
||||
ps.setLong(1, 1L);
|
||||
lobCreator.setClobAsCharacterStream(ps, 2, clobReader, (int)clobIn.length()); # <2>
|
||||
lobCreator.setBlobAsBinaryStream(ps, 3, blobIs, (int)blobIn.length()); # <3>
|
||||
lobCreator.setClobAsCharacterStream(ps, 2, clobReader, (int)clobIn.length()); # <2>
|
||||
lobCreator.setBlobAsBinaryStream(ps, 3, blobIs, (int)blobIn.length()); # <3>
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -4449,9 +4448,13 @@ with the same instance variable `lobHandler` and a reference to a `DefaultLobHan
|
||||
new RowMapper<Map<String, Object>>() {
|
||||
public Map<String, Object> mapRow(ResultSet rs, int i) throws SQLException {
|
||||
Map<String, Object> results = new HashMap<String, Object>();
|
||||
String clobText = lobHandler.getClobAsString(rs, "a_clob"); # <1>
|
||||
results.put("CLOB", clobText); byte[] blobBytes = lobHandler.getBlobAsBytes(rs, "a_blob"); # <2>
|
||||
results.put("BLOB", blobBytes); return results; } });
|
||||
String clobText = lobHandler.getClobAsString(rs, "a_clob"); # <1>
|
||||
results.put("CLOB", clobText);
|
||||
byte[] blobBytes = lobHandler.getBlobAsBytes(rs, "a_blob"); # <2>
|
||||
results.put("BLOB", blobBytes);
|
||||
return results;
|
||||
}
|
||||
});
|
||||
----
|
||||
|
||||
<1> Using the method `getClobAsString`, retrieve the contents of the CLOB.
|
||||
|
||||
Reference in New Issue
Block a user