配色: 字号:
第5章 Spring的数据库编程
2022-09-26 | 阅:  转:  |  分享 
  
第5章Spring的数据库编程5.1SpringJDBC5.2JdbcTemplate的常用方法5.1SpringJDBC
传统的JDBC即使执行一条简单的SQL,其过程也不简单,先打开数据库连接执行SQL,然后组装结果,最后关闭数据库资源,但太多的t
ry…catch…finally…语句,造成了代码泛滥。在Spring出现之后,为了解决这些问题,Spring提供了自己的方案,那
就是JdbcTemplate模板。SpringJDBC是Spring所提供的持久层技术,以一种更直接、更简洁的方式使用JDB
CAPI。Spring中的JDBC模块负责数据库资源管理,省去连接和关闭数据库的代码,简化了对数据库的操作,可以从繁琐的数据库操
作中解脱出来。5.1.15.1.25.1.1SpringJdbcTemplate类Spring框架在数据库开发中主要使用的是
JdbcTemplate类,是Spring针对传统JDBC代码失控提供的解决方案。该类作为SpringJDBC的核心类,提供了所
有对数据库操作功能的支持。该类是在原始JDBC基础上,构建了一个抽象层,提供了许多使用JDBC的模板和驱动模块,为Spring应用
操作关系数据库提供了更大的便利。JdbcTemplate类的继承关系十分简单,它继承了抽象类JdbcAccessor,同时实现了
接口JdbcOperations。在抽象类JdbcAccessor的设计中,该类为其子类提供了一些访问数据库时的公共属性,具体如下
:(1)DataSource: (2)SQLExceptionTranslator:在JdbcOperations接口中,
定义了通过Jdbc操作数据库的基本操作方法,而JdbcTemplate类提供这些接口方法的实现,包括添加、修改、查询和删除等操作。
5.1.2SpringJDBC的配置Spring框架提供JDBC支持主要由4个包组成,分别是core(核心包)、object
(对象包)、dataSource(数据源包)和support(支持包)。JdbcTemplate类就在核心包中,该类包含所有数据库
操作的基本方法。4个包具体说明如下。core:核心包,包含了JDBC的核心功能。dataSource:数据源包,访问数据源的实用工
具类。object:对象包,以面向对象的方式访问数据库。support:支持包,包含了core和object包的支持类。Spr
ing对数据库的操作都封装在了这几个包中,想要使用SpringJDBC,就需要对其进行配置。在Spring中,JDBC的配置是在
配置文件applicationContext.xml中完成的,其配置模板如图所示。5.2JdbcTemplate的常用方法在J
dbcTemplate类中,提供了大量的查询和更新数据库的方法,SpringJDBC就是使用这些方法来操作数据库的。下面分别介绍
execute()方法、update()方法、query()方法。5.2.1execute()方法execute(String
sql)方法能够完成执行SQL语句的功能,下面以创建和删除数据库表的SQL语句为例讲解,步骤如下:(1)启动前端工具SQL
yog,导入提供的eshop.sql脚本。(2)将项目spring-1复制并重命名为“spring-7”。(3)在已经添
加核心包的基础上,向项目中添加spring-jdbc-5.0.4.RELEASE.jar、spring-tx-5.0.4.RELE
ASE.jar和MySQL数据库驱动mysql-connector-java-5.1.38-bin.jar,再将这些jar包添加到
项目的构建路径中。(4)修改src路径下的applicationContext.xml文件。在该文件中配置id为dataSo
urce的数据源Bean和id为jdbcTemplate的JDBC模板Bean,并将数据源注入到JDBC模板中,(5)在co
m.ssm包中创建测试类TestJdbcTemplate,在main()方法中通过Spring容器获取JdbcTemplate实例
。5.2.2update()方法update()方法可以完成插入、更新和删除操作。在JdbcTemplate类中,update
方法中存在多个重载的方法,其常用方法具体介绍如下:intupdate(Stringsql):该方法是最简单的update方法重
载形式,可以直接传入SQL语句并返回受影响的行数。intupdate(PreparedStatementCreatorpsc)
:该方法执行从PreparedStatementCreator返回的语句,然后返回受影响的行数。intupdate(String
sql,PreparedStatementSetterpss):该方法通过PreparedStatementSetter设置
SQL语句中的参数,并返回受影响的行数。intupdate(Stringsql,Object...args):该方法使用Ob
ject...设置SQL语句中的参数,要求参数不能为空,并返回受影响的行数。5.2.2update()方法通过一个用户账户管理
的实例来实现对用户信息的插入、修改和删除操作。具体步骤如下。(1)在spring-7项目中,新建User类,重写toStri
ng()方法。(2)新建com.ssm.dao包,在该包中新建UserDAO接口,并在接口中定义添加用户的方法。(3)
新建com.ssm.dao.impl包,在该包中创建UserDAO接口的实现类UserDAOImpl,并在类中实现接口的方法。
(4)在applicationContext.xml文件中实现UserDAOImpl对JdbcTemplate类的依赖注入。(
5)在测试类TestJdbcTemplate中,添加一个JUnit4类型的单元测试方法addUserTest(),用于添加用户信
息。(6)在接口和实现类中增加修改用户的方法,并在测试类中添加一个测试方法updateUserTest()执行更新操作。
(7)在接口和实现类中增加修改用户的方法,并在测试类中添加一个测试方法deleteUserTest()执行删除操作。5.2.3
query()方法JdbcTemplate对JDBC的流程做了封装,提供了大量的query()方法来处理各种对数据库表的查询操作
,如下:Listquery(Stringsql,PreparedStatementSetterpss,RowMapper
rowMapper):该方法根据String类型参数提供的SQL语句创建PreparedStatement对象,通过RowMap
per将结果返回到List中。Listquery(Stringsql,Object[]args,RowMapperrow
Mapper):该方法使用Object[]的值来设置SQL中的参数值,采用RowMapper回调方法可以直接返回List类型的数据
。queryForObject(Stringsql,Object[]args,RowMapperrowMapper):该方
法将args参数绑定到SQL语句中,通过RowMapper返回单行记录,并转换为一个Object类型返回。queryForList
(Stringsql,Object[]args,classelementType):该方法可以返回多行数据的结果,
但必须是返回列表,elementType参数返回的是List元素类型。5.2.3query()方法下面通过示例来讲解query
()方法查询5.1.1小节中创建的user表中的数据,步骤如下:(1)通过SQLyog工具向user表中插入几条数据。(2
)在UserDAO中,分别创建一个通过id查询单个用户信息的方法findUserById和查询所有用户信息的方法findAllU
ser()。(3)在UserDAO接口的实现类UserDAOImpl中,实现接口中的方法,并使用query()方法分别进行查
询。(4)在TestJdbcTemplate测试类中,添加一个测试方法findUserByIdTest()来测试相应的条件查
询。(5)在TestJdbcTemplate测试类中,添加一个测试方法findAllUserTest()来查询所有用户。5.3小结本章对Spring框架中使用SpringJDBC进行数据操作进行了详细讲解。首先讲解了SpringJDBC中的核心类以及如何在Spring中配置SpringJDBC,然后通过案例讲解SpringJDBC核心类JdbcTemplate中常用方法的使用。通过本章的学习,读者能够学会如何使用Spring框架进行数据库开发,并能深切地体会到Spring框架的强大。
献花(0)
+1
(本文系太好学原创)