3.7 Modeling JDBC Operations as Java Objects

org.springframework.jdbc.object包含了大量让你以面向对象访问数据的类。

3.7.1 理解SqlQuery

SqlQuery是可重用,线程安全的的类去执行 SQL 查询,子类必须实现newRowMapper(…)方法,去提供一个RowMapper的实类。RowMapper可以从ResultSet去创建一个包含每行结果的对象。SqlQuery很少被直接用,因为子类MappingSqlQuery提供了更多更便利的实现。其他实现有
MappingSqlQueryWithParameters and UpdatableSqlQuery

3.7.2 使用MappingSqlQuery

实现方法
b spring 之DATA Access -- JDBC&JPA 下篇
可以只使用pid进行查询
b spring 之DATA Access -- JDBC&JPA 下篇
当面临多个参数和多个返回结构时,可以直接用execute方法
b spring 之DATA Access -- JDBC&JPA 下篇

3.7.3. Using SqlUpdate

继承并使用update
b spring 之DATA Access -- JDBC&JPA 下篇

3.7.4. Using StoredProcedure

3.8 常见问题

3.8.1 提供SQL参数的类型信息

通常Spring会检测SQL参数的类型,这就可以明确的去提供SQL类型,所以也很有必要让NULL值正确。
你可以以如下的几种方式指明SQL参数类型。

  • JdbcTemplate的很多update和查询接口会附带一个额外的int数组。这个数组被用来指明参数类型。数组里全是java.sql.Tpyes里的常量
  • 你可以使用SqlParamterValue类去包装类型信息。这么做的话,每一个参数都需要是一个SQL Type示例。你也可以提供一个可选的参数。
  • 对于使用命名参数方法,你可以使用SqlParameterSourceBeanPropertySqlParameterSourceMapSqlParameterSource。即提供一个source文件

3.8.2 处理BLOB和CLOB对象。

你可以存图像,或者其他二进制对象,这些对象被称作BLOBs(Binary Large OBject)和CLOBs(Character Large OBject)。Spring中你可以直接处理这些对象通过使用JdbcTemplate。也可以用SimpleJdbc。所有的这些方法都是用
LobHandler的接口–用来管理真实的LOB对象。LobHandler提供对LobCreator类的访问方式,通过getLobCreator方法,是为了插入一个新的LOB对象。
LobHandler和LobCreator提供以下几种对LOB 输入和输出 的方式。

  • BLOB
  • :byte[]: getBlobAsBytes and setBlobAsBytes
  • : InputStream: getBlobAsBinaryStream and setBlobAsBinaryStream
  • CLOB
  • String: getClobAsString and setClobAsString
  • InputStream: getClobAsAsciiStream and setClobAsAsciiStream
  • Reader: getClobAsCharact

下面会示范如何创建和插入BLOB
b spring 之DATA Access -- JDBC&JPA 下篇

3.8.3 对于in (X,X,X)模式的插入

select * from T_ACTOR where id in (1, 2, 3)
SQL是允许用in表达式的,参数列表
JDBC的prepared statements不能直接支持。
NamedParameterJdbcTemplate 和JdbcTemplate支持,通过java.util.List去传递。

3.8.4 处理复杂的类型和存储调用

使用SqlReturnType去做转化
b spring 之DATA Access -- JDBC&JPA 下篇
一个普通的java类
b spring 之DATA Access -- JDBC&JPA 下篇

3.9 内嵌数据库的使用

支持HSQL, H2, and Derby

3.9.1 为什么要有内嵌数据库

轻量与快

3.9.2 使用xml去创建内嵌数据库

b spring 之DATA Access -- JDBC&JPA 下篇

3.9.3 使用code去创建内嵌数据库

b spring 之DATA Access -- JDBC&JPA 下篇
也可以使用builder去创建一个bean
b spring 之DATA Access -- JDBC&JPA 下篇

3.9.4 不同内嵌数据库的具体支持

https://docs.spring.io/spring/docs/5.2.x/spring-framework-reference/data-access.html#jdbc-parameter-handling

3.9.5 使用内嵌数据库来测试

b spring 之DATA Access -- JDBC&JPA 下篇

3.9.6 使用多个内嵌数据库来测试

相关文章: