Spring JdbcTemplate 教程

2025年3月17日 | 阅读 3 分钟

Spring JdbcTemplate 是一种连接数据库并执行 SQL 查询的强大机制。它在内部使用 JDBC API,但消除了 JDBC API 的许多问题。

JDBC API 的问题

JDBC API 的问题如下

  • 在执行查询前后,我们需要编写大量的代码,例如创建连接、语句、关闭结果集、连接等。
  • 我们需要在数据库逻辑上执行异常处理代码。
  • 我们需要处理事务。
  • 从一个数据库逻辑到另一个数据库逻辑重复所有这些代码是一项耗时的任务。

Spring JdbcTemplate 的优势

Spring JdbcTemplate 消除了上述 JDBC API 的所有问题。它为您提供直接编写查询的方法,因此可以节省大量工作和时间。


Spring Jdbc 方法

Spring 框架为 JDBC 数据库访问提供以下方法

  • JdbcTemplate
  • NamedParameterJdbcTemplate
  • SimpleJdbcTemplate
  • SimpleJdbcInsert 和 SimpleJdbcCall

JdbcTemplate 类

它是 Spring JDBC 支持类中的核心类。它负责创建和释放资源,例如创建和关闭连接对象等。因此,如果您忘记关闭连接,也不会导致任何问题。

它处理异常,并通过 org.springframework.dao 包中定义的异常类提供信息丰富的异常消息。

我们可以借助 JdbcTemplate 类执行所有数据库操作,例如从数据库插入、更新、删除和检索数据。

让我们看看 spring JdbcTemplate 类的方法。

编号。方法描述
1)public int update(String query)用于插入、更新和删除记录。
2)public int update(String query,Object... args)用于使用给定参数,使用 PreparedStatement 插入、更新和删除记录。
3)public void execute(String query)用于执行 DDL 查询。
4)publicT execute(String sql, PreparedStatementCallbackaction)通过使用 PreparedStatement 回调执行查询。
5)publicT query(String sql, ResultSetExtractorrse)用于使用 ResultSetExtractor 获取记录。
6)public列表query(String sql, RowMapperrse)用于使用 RowMapper 获取记录。

Spring JdbcTemplate 的示例

我们假设您已在 Oracle10g 数据库中创建了下表。

Employee.java

此类包含 3 个带有构造函数、setter 和 getter 的属性。

EmployeeDao.java

它包含一个属性 jdbcTemplate 和三个方法 saveEmployee()、updateEmployee 和 deleteEmployee()。

applicationContext.xml

DriverManagerDataSource 用于包含有关数据库的信息,例如驱动程序类名、连接 URL、用户名和密码。

在 DriverManagerDataSource 类型的 JdbcTemplate 类的属性中有一个名为 datasource 的属性。 因此,我们需要在 JdbcTemplate 类的 datasource 属性中提供 DriverManagerDataSource 对象的引用。

在这里,我们在 EmployeeDao 类中使用 JdbcTemplate 对象,所以我们通过 setter 方法传递它,但是您也可以使用构造函数。

Test.java

此类从 applicationContext.xml 文件获取 bean 并调用 saveEmployee() 方法。 您还可以通过取消注释代码来调用 updateEmployee() 和 deleteEmployee() 方法。