Spring框架中 配置c3p0连接池

 

开发准备:

1.导入jar包:

ioc基本jar

jdbcTemplate基本jar

c3p0基本jar

别忘了mysql数据库驱动jar

原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象

 1 package org.dao;
 2 import java.beans.PropertyVetoException;
 3 import org.springframework.jdbc.core.JdbcTemplate;
 4 import org.springframework.jdbc.datasource.DriverManagerDataSource;
 5 import com.mchange.v2.c3p0.ComboPooledDataSource;
 6 
 7 public class Dao {
 8     public void add(){
 9         /*
10         //使用spring框架中的jdbcTemplate完成数据库的访问
11     
12          //设置数据库的信息
13         DriverManagerDataSource dmds=new DriverManagerDataSource();
14         dmds.setDriverClassName("com.mysql.jdbc.Driver");
15         dmds.setUrl("jdbc:mysql://localhost:3306/c3p0jdbctemplate");
16         dmds.setUsername("root");
17         dmds.setPassword("jay571018");
18         
19         //创建JdbcTemplate对象  设置数据源
20         JdbcTemplate jdbcTemplate=new JdbcTemplate(dmds);
21         
22         //调用方法  实现数据库的访问
23         String sql="insert into User(name,password) values(?,?)";
24         jdbcTemplate.update(sql,"joke",520);
25         */
26             
27         //使用c3p0连接池  配置数据库的信息  然后创建JdbcTemplate对象  设置数据源  完成对数据库访问
28         ComboPooledDataSource datesourse=new ComboPooledDataSource();
29         try {
30             datesourse.setDriverClass("com.mysql.jdbc.Driver");
31         } catch (PropertyVetoException e) {
32             // TODO Auto-generated catch block
33             e.printStackTrace();
34         }
35         datesourse.setJdbcUrl("jdbc:mysql://localhost:3306/c3p0jdbctemplate");
36         datesourse.setUser("root");
37         datesourse.setPassword("jay571018");
38         //创建JdbcTemplate对象  设置数据源
39         JdbcTemplate jdbcTemplate=new JdbcTemplate(datesourse);
40         
41         //调用方法  实现数据库的访问
42         String sql="insert into User(name,password) values(?,?)";
43         jdbcTemplate.update(sql,"joke",520);    
44         System.out.println("增加了一条信息。。。。。。。");
45     }
46 }
 1 package org.service;
 2 import org.dao.*;
 3 public class Service {
 4     //想在service中调用dao对象的add方法   创建dao对象  生成对应的set方法 
 5     private Dao dao;
 6     
 7     //生成set方法  注入dao对象
 8     public void setDao(Dao dao){
 9         this.dao=dao;
10     }
11     public void add(){
12         dao.add();
13     }
14 }
 1 package org.test;
 2 import org.junit.Test;
 3 import org.service.Service;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 
 7 public class TestDemo {
 8     @Test
 9     public void testDemo(){
10         ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
11         Service s=(Service) ac.getBean("service");
12         s.add();
13     }
14 }
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xmlns:aop="http://www.springframework.org/schema/aop"
 6     xmlns:tx="http://www.springframework.org/schema/tx"
 7     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 8     http://www.springframework.org/schema/beans/spring-beans.xsd
 9     http://www.springframework.org/schema/context
10     http://www.springframework.org/schema/context/spring-context.xsd
11     http://www.springframework.org/schema/aop
12     http://www.springframework.org/schema/aop/spring-aop.xsd
13     http://www.springframework.org/schema/tx
14     http://www.springframework.org/schema/tx/spring-tx.xsd">    
15     <bean id="dao" class="org.dao.Dao"></bean>
16     <bean id="service" class="org.service.Service">
17         <property name="dao" ref="dao"></property>
18     </bean>
19 </beans>

 

 

改进程序代码:使用配置文件方式(IOC)生成访问数据库对象

需要注意的是:使用配置文件生成bean对象时,在的类中一定需要有属性对应的set方法以及无参构造方法(不写的话默认有一个无参构造),否则无法完成注入,

两者缺一不可,因为使用set注入的时候,spring先调用了构造方法实例化对象,然后才对对象中的属性进行了注入。

另外IOC注入方式有两种,一种set方式,另外一种是构造注入,构造注入的时候当然需要构造函数(有参数)。

 

 1 package org.dao;
 2 import java.beans.PropertyVetoException;
 3 
 4 import org.springframework.jdbc.core.JdbcTemplate;
 5 import org.springframework.jdbc.datasource.DriverManagerDataSource;
 6 
 7 import com.mchange.v2.c3p0.ComboPooledDataSource;
 8 
 9 public class Dao {
10     private JdbcTemplate jdbcTemplate;
11     
12     //设置set方法  为了之后的注入
13     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
14         this.jdbcTemplate = jdbcTemplate;
15     }
16     public void add(){    
17         String sql="insert into User(name,password) values(?,?)";
18         jdbcTemplate.update(sql,"joke2",520);        
19         System.out.println("增加了一条信息。。。。。。。");
20     }
21 }
 1 package org.service;
 2 import org.dao.*;
 3 public class Service {
 4     //想在service中调用dao对象的add方法   创建dao对象  生成对应的set方法 
 5     private Dao dao;
 6     
 7     //生成set方法  注入dao对象
 8     public void setDao(Dao dao){
 9         this.dao=dao;
10     }    
11     public void add(){
12         dao.add();
13     }
14 }
 1 package org.test;
 2 import org.junit.Test;
 3 import org.service.Service;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 
 7 public class TestDemo {
 8     public static void main(String args[]){
 9         ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
10         Service s=(Service) ac.getBean("service");
11         s.add();
12     }
13 }
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xmlns:aop="http://www.springframework.org/schema/aop"
 6     xmlns:tx="http://www.springframework.org/schema/tx"
 7     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 8     http://www.springframework.org/schema/beans/spring-beans.xsd
 9     http://www.springframework.org/schema/context
10     http://www.springframework.org/schema/context/spring-context.xsd
11     http://www.springframework.org/schema/aop
12     http://www.springframework.org/schema/aop/spring-aop.xsd
13     http://www.springframework.org/schema/tx
14     http://www.springframework.org/schema/tx/spring-tx.xsd">
15     <!-- 创建连接池  配置连接池的属性值 -->
16     <bean id="ds" class="com.mchange.v2.c3p0.ComboPooledDataSource">
17         <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
18         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/c3p0jdbctemplate"></property>
19         <property name="user" value="root"></property>
20         <property name="password" value="jay571018"></property>
21     </bean>
22     
23     <!-- dao中注入jdbctemplate对象 -->
24     <bean id="dao" class="org.dao.Dao">
25         <property name="jdbcTemplate" ref="jdbctemplate"></property>
26     </bean>                
27     
28     <!-- service中注入dao对象 -->
29     <bean id="service" class="org.service.Service">
30         <property name="dao" ref="dao"></property>
31     </bean>
32     
33     <!-- 创建jdbctemplate对象  并且向其中注入连接池对象  dateSource是该对象中数据源的属性 -->
34     <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
35         <property name="dataSource" ref="ds"></property>
36     </bean>
37 
38 </beans>

注入关系:

 

1.因为service类需要调用dao类中的方法,所以在service中生成了一个dao对象,并且存在set方法

    <!-- service中注入dao对象 -->
29     <bean id="service" class="org.service.Service">
30         <property name="dao" ref="dao"></property>
31     </bean>


2.在dao类中要对数据库进行操作,所以创建jdbcTemplate对象,并且生成set方法
23     <!-- dao中注入jdbctemplate对象 -->
24     <bean id="dao" class="org.dao.Dao">
25         <property name="jdbcTemplate" ref="jdbctemplate"></property>
26     </bean>  

3.但是jdbcTemplate没有设置数据源,所以我们导入了数据库连接池,而且在配置文件中直接生成了c3p0连接池对象,就是用于jdbcTemplate对象的实例化
33     <!-- 创建jdbctemplate对象  并且向其中注入连接池对象  dateSource是该对象中数据源的属性 -->
34     <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
35         <property name="dataSource" ref="ds"></property>
36     </bean>


4. <!-- 创建连接池  配置连接池的属性值 -->    
     <bean id="ds" class="com.mchange.v2.c3p0.ComboPooledDataSource">
17         <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
18         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/c3p0jdbctemplate"></property>
19         <property name="user" value="root"></property>
20         <property name="password" value="jay571018"></property>
21     </bean>

以上就完成了对数据库的访问(向数据库中插入了一条记录),个人练习总结,请多指教。

 

 

-----------------------------------------

欢迎大家转载,但请注明原创链接:http://www.cnblogs.com/Joke-Jay/p/6502507.html

 

   

 

 

 

posted @ 2017-03-05 10:09  乔克叔叔  阅读(9890)  评论(0编辑  收藏  举报