Spring的数据库开发:基本概念
① Spring JdbcTemplate类
1.JdbcTemplate就是Spring对原始JDBC封装之后提供的一个操作数据库的工具类。我们可以借助JdbcTemplate来完成所有数据库操作,比如:增删改查等。
2.改造之后的JdbcTemplate主要提供以下三种类型的方法:
executeXxx()
: 执行任何SQL语句,对数据库、表进行新建、修改、删除操作updateXxx()
: 执行新增、修改、删除等语句queryXxx()
: 执行查询相关的语句
② Spring JDBC的配置(包)
Spring JDBC抽象框架由四个包构成: core
、dataSource
、object
以及support
。
-
org.springframework.jdbc.core包
由JdbcTemplate类以及相关的回调接口(callback interface)和类组成。 -
org.springframework.jdbc.datasource包
由一些用来简化DataSource访问的工具类,以及各种DataSource接口的简单实现(主要用于单元测试以及在J2EE容器之外使用JDBC)组成。工具类提供了一些静态方法,诸如通过JNDI获取数据连接以及在必要的情况下关闭这些连接。它支持绑定线程的连接,比如被用于DataSourceTransactionManager的连接。 -
org.springframework.jdbc.object包
由封装了查询、更新以及存储过程的类组成,这些类的对象都是线程安全并且可重复使用的。它们类似于JDO,与JDO的不同之处在于查询结果与数据库是“断开连接”的。它们是在org.springframework.jdbc.core包的基础上对JDBC更高层次的抽象。 -
org.springframework.jdbc.support包
提供了一些SQLException的转换类以及相关的工具类。
在JDBC处理过程中抛出的异常将被转换成org.springframework.dao包
中定义的异常。因此使用Spring JDBC进行开发将不需要处理JDBC或者特定的RDBMS才会抛出的异常。所有的异常都是unchecked exception
,这样我们就可以对传递到调用者的异常进行有选择的捕获。
要想使用JDBC,就得对其进行配置,下面是xml配置文件基本模板:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 开启组件扫描 -->
<context:component-scan base-package="JDBC"></context:component-scan>
<!-- 1.配置数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<!-- 1.1 连接数据库的url -->
<property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf8"></property>
<!-- 1.2 连接数据库的用户名 -->
<property name="username" value="root"></property>
<!-- 1.3 连接数据库的密码 -->
<property name="password" value="root"></property>
<!-- 1.4 数据库驱动 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
</bean>
<!-- 2.创建JdbcTemplate对象 --- jdb模板 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 2.1 注入dataSource 数据源 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 3. 配置注入其他类 -->
<bean id="xxx" class="xxx">
<property name="jabcTemplate" ref="jdbcTemplate"></property>
</bean>
..........
</beans>
在上述代码中,定义了3个Bean,分别是dataSource
、jdbcTemplate
和需要注入类的Bean其中dataSource
对应org.springframework.jdbc.datasource.DriverManagerDataSource
类用于对数据源进行配置,jdbcTemplate
对应的org.springframework.jdbc.core.JdbcTemplat
类中定义了JdbcTemplate的相关配置。上述代码中dataSource的配置就是JDBC连接数据库时所需的4个属性。
这4个属性,需要根据数据库类型或者机器配置的不同设置相应的属性值。例如,如果数据库类型不同,需要更改驱动名称;如果数据库不在本地,则需要将地址中的localhost替换成相应的主机IP;如果修改过MySQL数据库的端口号(默认为3306),则需要加上修改的端口号,如果未修改,则端口号可以省略;同时连接数据库的用户名和密码需要与数据库创建时设置的用户名和密码保持一致,本示例中Spring数据库的用户名和密码都是root。
定义JdbcTemplate时,需要将dataSource注入到JdbcTemplate中,而其他需要使用JdbcTemplate的Bean,也需要将JdbcTemplate注入到该Bean中(通常注入到Dao类中,在Dao类中进行与数据库的相关操作)。