zoukankan      html  css  js  c++  java
  • 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

       

     

    查看更多随笔:http://www.cnblogs.com/Joke-Jay/
  • 相关阅读:
    Spring BeanFactory与FactoryBean的区别及其各自的详细介绍于用法
    解决 vim 报错:the imp module is deprecated in favour of importlib
    SIFT了解,哪些方法可以在现在的AI算法中借鉴?
    CLAHE
    实际算法项目工程上手日志C/C++
    OS X 切换gcc版本
    opencv3.4.2 cmake错误:in-source builds are not allowed
    C++ opencv 计算两张图像的PSNR相似度
    如何在OS X 中使用markdown + latex混合记笔记?
    给anaconda 换源
  • 原文地址:https://www.cnblogs.com/Joke-Jay/p/6502507.html
Copyright © 2011-2022 走看看