Spring连接数据库的三种方式
1.通过DriverManagerDataSource获取连接对象
这个东西来历可以说一下,JDK中有个接口:
看简介可以得知这是个获取专门生产Connection对象的工厂类,基本上所有框架用来创建数据库连接都会实现这个接口,Spring的jdbc包就实现了这个接口,实现类就是DriverManagerDataSource,在它之前还有几个抽象类,这里不多BB,知道来历就好。
XML:
返回的是个DataSource对象,再通过DataSource的getConnection方法即可获取:
这么做还不够简便,获取个连接对象,预编译SQL、执行、获取结果集的逻辑还是要自己动手写,Spring早就预料到这点了, 看第二种连接方式。
2.通过JdbcTemplate(JDBC模板)连接数据库
SpringJDBC有个模板类,就叫做JdbcTemplate,这里面封装了一系列操作数据的方法,
query、 execute等等,这个类能够使我们开发时只关注SQL语句的编写以及结果的获取,其余的工作交给它就行。
XML:
测试类:
是的,从创建数据库连接到获取查询结果,只需要这么几句Java代码,其他繁琐的步骤全部交给Spring处理,屌的不行。
3.使用外部属性文件
这个方法呢不仅仅是适用于JDBC,在配置其他Bean的时候一样管用。
Spring 提供了一个叫 PropertyPlaceholderConfigurer 的类,这个类可以读取properties文件,
然后配置文件里使用形式为 ${键} 的形式,获取属性文件中的数据。
a) Spring 2.0时的玩法:
既然是个类,那么还是要用到bean标签去声明的,这个类的全路径有点长:
name=location意思是调用这个类中的setLocation方法,value值则是properties文件所在的路径,classpath前缀,用类路径(相对路径),file前缀,用绝对路径。
资源文件:
userName这个键要注意一下,在Spring配置文件中username是个关键字,无论大小写。但如果资源文件中定义有这个键,那么它会使用资源文件中的这个,如果没有,它会填充操作系统的用户名,(win7默认是Administrator),下面介绍的另一种方法也会有这个问题,继续往下。
b) Spring2.5 之后的玩法:
Spring 2.5 之后: 可通过 <context:property-placeholder> 元素简化
<beans> 中添加 context Schema 定义,添加context命名空间:
在配置文件中加入如下配置:
整个配置文件内容如下:
注意:使用这种方式后就不能再用username作为键了,这种方式优先填充的是系统操作系统的用户名,
如果数据库的用户名和操作系统用户名一致,可以用,如果不一致,就改成别的吧。