Spring JdbcTemplate是一种连接数据库和执行SQL查询的强大机制。它内部使用 ,但消除了许多JDBC API问题。
JDBC API的问题
JDBC API存在的问题如下 :
我们需要在执行查询之前和之后编写大量代码,例如创建连接,语句,结束结果集,连接等。
我们需要在数据库逻辑上执行异常处理代码。
我们需要处理事物。
将所有这些代码从一个数据库逻辑重复到另一个数据库逻辑是一项耗时的任务。
Spring JdbcTemplate的优点
消除了JDBC API的所有上述问题。它为您提供了直接编写查询的方法,因此可以节省大量的工作和时间。
Spring Jdbc方法
Spring框架为JDBC数据库访问提供了以下方法:
JdbcTemplate
NamedParameterJdbcTemplate
SimpleJdbcTemplate
SimpleJdbcInsert and SimpleJdbcCall
JdbcTemplate类
它是Spring JDBC支持类中的核心类。它负责创建和释放资源,如创建和关闭连接对象等。如果忘记关闭连接,它也不会导致任何问题。
它通过 中定义的excepion类来处理异常,并提供异常消息。
我们可以借助JdbcTemplate类执行所有数据库操作,例如插入,更新,删除和从数据库中检索数据。
让我们看一下 类的方法。
Spring JdbcTemplate示例
假设已在Oracle10g数据库中创建了下表。
Employee.java
该类包含3个带有构造函数和 和 的属性。
EmployeeDao.java
它包含一个属性jdbcTemplate和三个方法 , 和 。
applicationContext.xml
: 包含了关于数据库的信息,比如驱动类名、connnection URL、用户名和密码。
在DriverManagerDataSource类型的JdbcTemplate类中有一个名为 的属性。因此,我们需要在JdbcTemplate类中为datasource属性提供 对象的引用。
文件中,我们在 类中使用JdbcTemplate对象,因此我们通过 方法传递它,但是您也可以使用构造函数。
Test.java
此类从applicationContext.xml文件获取bean并调用 方法。您也可以通过取消注释代码来调用 和 方法。
Spring JdbcTemplate中PreparedStatement示例
我们可以借助JdbcTemplate类的 方法使用Spring JdbcTemplate执行参数化查询。要使用参数化查询,我们在 方法中传递 的实例。
使用参数化查询的execute方法的语法
PreparedStatementCallback接口
它处理输入参数和输出结果。在这种情况下,您不需要关心单引号和双引号。
接口的方法 :
Spring中使用PreparedStatement 示例
假设已在Oracle10g数据库中创建了下表。
Employee.java
EmployeeDao.java
它包含一个属性jdbcTemplate和一个方法 。您必须了解匿名类的概念才能理解该方法的代码。
applicationContext.xml
Test.java
此类从applicationContext.xml文件获取bean并调用 方法。
ResultSetExtractor示例| 通过Spring JdbcTemplate获取记录
可以使用JdbcTemplate类的 方法轻松地从数据库中获取记录,我们需要传递 的实例。
使用 的查询方法的语法
ResultSetExtractor接口
ResultSetExtractor接口可用于从数据库中获取记录。它接受 并返回列表。
ResultSetExtractor接口的方法 :
它只定义了一个接受ResultSet实例作为参数的方法 。该方法的语法如下:
ResultSetExtractor接口示例,该示例用于显示表的所有记录
假设已在Oracle10g数据库中创建了下表。
Employee.java
该类包含3个带有构造函数和setter和getter的属性。它定义了一个额外的方法 。
EmployeeDao.java
该类包含属性jdbcTemplate和一个方法 。
applicationContext.xml
Test.java
此类从applicationContext.xml文件获取bean并调用EmployeeDao类的 方法。
RowMapper示例| 通过Spring JdbcTemplate获取记录
与ResultSetExtractor一样,我们可以使用 接口使用 类的 方法从数据库中获取记录。在执行中我们需要传递RowMapper的实例。
使用RowMapper的查询方法的语法
RowMapper接口
RowMapper接口允许映射与用户定义类实例的关系行。它在内部迭代ResultSet并将其添加到集合中。因此,我们不需要编写大量代码来获取R 的记录。
RowMapper优于ResultSetExtractor
RowMapper保存了大量代码,因为它在内部将ResultSet的数据添加到集合中。
RowMapper接口的方法 :
它只定义了一个接受ResultSet实例和 作为参数列表的方法 。该方法的语法如下:
RowMapper接口示例,用于显示表的所有记录
假设已在Oracle10g数据库中创建了下表。
Employee.java
EmployeeDao.java
applicationContext.xml
Test.java
Spring NamedParameterJdbcTemplate示例
Spring提供了另一种通过命名参数插入数据的方法。这样,我们使用名称而不是?(问号)。因此,最好记住列的数据。
命名参数查询的简单示例 :
NamedParameterJdbcTemplate类的方法
在这个例子中,我们将只调用 类的 方法。该方法的语法如下:
NamedParameterJdbcTemplate类示例
假设已在Oracle10g数据库中创建了下表。
Employee.java
EmployeeDao.java
applicationContext.xml
SimpleTest.java
这个类从applicationContext中获取 文件,并调用save方法。
Spring SimpleJdbcTemplate示例
Spring 3 JDBC通过SimpleJdbcTemplate类支持java 5特性var-args(可变参数)和自动装箱。
类封装了 类,并提供了更新方法,我们可以在其中传递任意数量的参数。
SimpleJdbcTemplate类的更新方法的语法 :
我们应该按照参数化查询中定义的顺序传递update方法中的参数值。
我们应该按照参数化查询中定义的顺序传递update方法中的参数值。
假设已在Oracle10g数据库中创建了下表。
Employee.java
EmployeeDao.java该类包含一个属性SimpleJdbcTemplate和一个方法update。在这种情况下,update method只更新相应id的名称,如果您想同时更新name 和salary,请注释掉上面两行 方法的代码,取消注释下面给出的两行代码。
applicationContext.xml
该DriverManagerDataSource和用于包含有关数据库的信息,如驱动程序类名称,网址connnection,用户名和密码。
在DriverManagerDataSource类型的 类中有一个名为datasource的属性。因此,我们需要在SimpleJdbcTemplate类中为 属性提供DriverManagerDataSource对象的引用。
这里,我们在EmployeeDao类中使用 对象,因此我们通过 传递它,但您也可以使用setter方法。
SimpleTest.java
此类从 文件获取bean并调用EmpDao类的 方法。
END ;
领取专属 10元无门槛券
私享最新 技术干货