2017-11-10 22:55:45
Spring 对持久层技术支持 :
- JDBC : org.springframework.jdbc.core.JdbcTemplate
- Hibernate3.0 : org.springframework.orm.hibernate3.HibernateTemplate
- IBatis(MyBatis) : org.springframework.orm.ibatis.SqlMapClientTemplate
- JPA : org.springframework.orm.jpa.JpaTemplate
public class Jdbc1 { @Test public void demo(){ // 创建连接池 DriverManagerDataSource dataSource = new DriverManagerDataSource(); // 配置参数 dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/testdb"); dataSource.setUsername("root"); dataSource.setPassword("hy1102"); // 使用Jdbc模板 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.execute("create table user2 (id int primary key auto_increment,name varchar(20))"); } }
显然每次在程序中用代码创建连接池是很不方便的,于是我们可以使用Spring来帮助我们对这个类进行配置。
常用的数据源有三种:
- spring数据源实现类,DriverManagerDataSource;
- DBCP数据源,BasicDataSource;
- C3P0数据源,ComboPooledDataSource;
一、DriverManagerDataSource的配置
配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--配置连接池--> <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/testdb"/> <property name="username" value="host"/> <property name="password" value="hy1102"/> </bean> <!--定义模板--> <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"/> </bean> </beans>
测试类:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:config4.xml") public class Jdbc2 { @Resource(name = "jdbctemplate") private JdbcTemplate jt; @Test public void demo(){ jt.execute("..."); } }
二、DBCP数据源,BasicDataSource的配置
首先需要引入两个jar包,也就是commons.dbcp 和 commons.pool。和上一种方法略有区别,但差别很小。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--配置连接池--> <!--<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">--> <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>--> <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>--> <!--<property name="username" value="host"/>--> <!--<property name="password" value="hy1102"/>--> <!--</bean>--> <!-- 配置DBCP连接池 --> <bean id="datasource" class=" org.apache.commons.dbcp.BasicDataSource "> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/testdb"/> <property name="username" value="host"/> <property name="password" value="hy1102"/> </bean> <!--定义模板--> <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"/> </bean> </beans>
三、C3P0数据源,ComboPooledDataSource的配置
首先先引入jar包c3p0-0.9.1.2.jar。
C3P0的配置参数和前两个不太一样,这个要注意。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--配置连接池--> <!--<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">--> <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>--> <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>--> <!--<property name="username" value="host"/>--> <!--<property name="password" value="hy1102"/>--> <!--</bean>--> <!-- 配置DBCP连接池 --> <!--<bean id="datasource" class=" org.apache.commons.dbcp.BasicDataSource ">--> <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>--> <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>--> <!--<property name="username" value="host"/>--> <!--<property name="password" value="hy1102"/>--> <!--</bean>--> <!-- 配置 c3p0 连接池 --> <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name=" driverClass " value="com.mysql.jdbc.Driver"/> <property name=" jdbcUrl " value="jdbc:mysql://localhost:3306/testdb"/> <property name=" user " value="host"/> <property name=" password " value="hy1102"/> </bean> <!--定义模板--> <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"/> </bean> </beans>
四、将参数设置写到属性文件中
方法一:
在src文件夹下新建jdbc.properties文件
jdbc.driver = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306/testdb jdbc.user = root jdbc.password = hy1102
配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--配置连接池--> <!--<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">--> <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>--> <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>--> <!--<property name="username" value="host"/>--> <!--<property name="password" value="hy1102"/>--> <!--</bean>--> <!-- 配置DBCP连接池 --> <!--<bean id="datasource" class=" org.apache.commons.dbcp.BasicDataSource ">--> <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>--> <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>--> <!--<property name="username" value="host"/>--> <!--<property name="password" value="hy1102"/>--> <!--</bean>--> <!--引入该属性文件--> <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> <!-- 配置 c3p0 连接池 --> <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name=" driverClass " value="${jdbc.driver}"/> <property name=" jdbcUrl " value="${jdbc.url}"/> <property name=" user " value="${jdbc.user}"/> <property name=" password " value="${jdbc.password}"/> </bean> <!--定义模板--> <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"/> </bean> </beans>
方法二:
使用context标签。
<?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" 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"> <!--配置连接池--> <!--<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">--> <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>--> <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>--> <!--<property name="username" value="host"/>--> <!--<property name="password" value="hy1102"/>--> <!--</bean>--> <!-- 配置DBCP连接池 --> <!--<bean id="datasource" class=" org.apache.commons.dbcp.BasicDataSource ">--> <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>--> <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>--> <!--<property name="username" value="host"/>--> <!--<property name="password" value="hy1102"/>--> <!--</bean>--> <!--引入该属性文件--> <!--<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">--> <!--<property name="location" value="classpath:jdbc.properties"/>--> <!--</bean>--> <!--使用context标签引入属性文件--> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 配置 c3p0 连接池 --> <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name=" driverClass " value="${jdbc.driver}"/> <property name=" jdbcUrl " value="${jdbc.url}"/> <property name=" user " value="${jdbc.user}"/> <property name=" password " value="${jdbc.password}"/> </bean> <!--定义模板--> <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"/> </bean> </beans>