跳到主要内容

JdbcTemplate 类

准备工作

JdbcTemplate 是 dbVisitor 专门提供给基于 SQL 字符串为使用场景而设计的。API 封装了众多实用方法可以覆盖绝大多数数据库操作的需求。

  • 在使用之前需要准备好数据源链接,可以是 javax.sql.DataSource 也可以是一个具体的 java.sql.Connection
  • JdbcTemplate 是 无状态 的,可以随时创建和销毁。

下面以 javax.sql.DataSource 为例,使用 HikariCP 作为数据源。

1. 创建数据源
HikariConfig config = new HikariConfig();
config.setAutoCommit(false);
config.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test");
config.setUsername("root");
config.setPassword("123456");
config.setDriverClassName("com.mysql.jdbc.Driver");
config.setMaximumPoolSize(20);
config.setMinimumIdle(1);
config.setConnectionTimeout(30000);

DataSource dbPool = new HikariDataSource(config);

下一步定义 JdbcTemplate,将创建好的 dbPool 数据源作为依赖参数传入 JdbcTemplate 构造方法。

2. 创建 JdbcTemplate
JdbcTemplate jdbc = new JdbcTemplate(dbPool);

原理

JdbcTemplate 的核心实现原理是基于 Template 模式,下面是一个名为 execute 的核心模版方法:

核心模版方法
// T 为模板方法的返回值类型
T result = jdbc.execute((ConnectionCallback<T>) con -> {
...
});

在所有模版方法中以 execute(ConnectionCallback) 最为基础,在这个基础模版方法中 JdbcTemplate 会处理获取连接、释放连接、捕获异常。 上层代码只需要专注于使用 Connection。

使用指引

  • 查询,执行有返回结果的 SQL 语句。例如:一个SELECT 语句或任何带有返回结果的语句。
  • 更新,执行无返回值的 SQL 语句。例如:INSERT、UPDATE、DELETE 或 DDL操作。
  • 批量化,用于执行可以作为批处理的一组操作。
  • 存储过程,用于执行存储过程、存储函数。
  • 规则,通过利用规则机制赋予 SQL 更加强大的特性。
  • 多值,可以用来执行含有多条语句的 SQL 字符串并且获取所有结果。
  • 脚本,可以用来执行含有多条语句的 SQL 字符串或者加载外部资源文件中的查询。
  • 使用模版,通过模版方法来操作数据库。
  • 高级特性,介绍 JdbcTemplate 类的一些特有属性功能和效果。
  • 参数传递,了解使用不同的方式传进行递参数。
  • 接收结果,了解接收数据的不同方式。