• C3p0数据库连接池的使用


    1:首先介绍c3p0的一般使用用法,这种用法练习使用,当然工作的时候使用第二种xml配置完成c3p0的使用。

    c3p0的网址:http://www.mchange.com/projects/c3p0/

      1.1:第一种方式使用c3p0:

        使用编码方式实现c3p0数据库连接池,练习学习使用的方式

        1.1.1:创建数据库和数据表,省略。

        1.1.2:引包,如下所示,因为需要连接数据库,所以必须加上mysql的驱动包
           c3p0-0.9.1.2.jar
           mysql-connector-java-5.1.12-bin.jar

        1.1.3:创建实体类,例如User.java,源码如下所示:

     1 package com.bie.po;
     2 /** 
     3 * @author BieHongLi 
     4 * @version 创建时间:2017年3月11日 下午12:55:21 
     5 * 
     6 */
     7 public class User {
     8 
     9     private int id;
    10     private String name;
    11     private String password;
    12     private String email;
    13     private String phone;
    14     public int getId() {
    15         return id;
    16     }
    17     public void setId(int id) {
    18         this.id = id;
    19     }
    20     public String getName() {
    21         return name;
    22     }
    23     public void setName(String name) {
    24         this.name = name;
    25     }
    26     public String getPassword() {
    27         return password;
    28     }
    29     public void setPassword(String password) {
    30         this.password = password;
    31     }
    32     public String getEmail() {
    33         return email;
    34     }
    35     public void setEmail(String email) {
    36         this.email = email;
    37     }
    38     public String getPhone() {
    39         return phone;
    40     }
    41     public void setPhone(String phone) {
    42         this.phone = phone;
    43     }
    44     @Override
    45     public String toString() {
    46         return "User [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + ", phone=" + phone
    47                 + "]";
    48     }
    49     
    50     
    51 }

        1.1.4:创建好实体类之后就可以进行测试c3p0了,这里使用junit进行测试;源码如下所示:

     1 package com.bie.test;
     2 
     3 import java.beans.PropertyVetoException;
     4 import java.sql.Connection;
     5 import java.sql.PreparedStatement;
     6 import java.sql.ResultSet;
     7 import java.sql.SQLException;
     8 import java.util.ArrayList;
     9 import java.util.List;
    10 
    11 import org.junit.Test;
    12 
    13 import com.bie.po.User;
    14 import com.mchange.v2.c3p0.ComboPooledDataSource;
    15 
    16 /** 
    17 * @author BieHongLi 
    18 * @version 创建时间:2017年3月11日 下午12:40:11 
    19 * 
    20 */
    21 public class C3p0Test {
    22 
    23     //使用编码方式实现c3p0数据库连接池
    24     @Test
    25     public void TestC3p0() throws PropertyVetoException, SQLException{
    26         //第一步:创建连接池核心工具类
    27         ComboPooledDataSource dataSource=new ComboPooledDataSource();
    28         //第二步:连接池,url,驱动,账号,密码,初始连接数,最大连接数
    29         dataSource.setJdbcUrl("jdbc:mysql:///test");//设置url
    30         dataSource.setDriverClass("com.mysql.jdbc.Driver");//设置驱动
    31         dataSource.setUser("root");//mysql的账号
    32         dataSource.setPassword("123456");//mysql的密码
    33         dataSource.setInitialPoolSize(6);//初始连接数,即初始化6个连接
    34         dataSource.setMaxPoolSize(50);//最大连接数,即最大的连接数是50
    35         dataSource.setMaxIdleTime(60);//最大空闲时间
    36         
    37         //第三步:从连接池对象中获取数据库连接
    38         Connection con=dataSource.getConnection();
    39         String sql="select * from user ";
    40         PreparedStatement ps=con.prepareStatement(sql);
    41         ResultSet rs=ps.executeQuery();
    42         
    43         List<User> list=new ArrayList<User>();
    44         while(rs.next()){
    45             User user=new User();
    46             user.setId(rs.getInt("id"));
    47             user.setName(rs.getString("name"));
    48             user.setPassword(rs.getString("password"));
    49             user.setEmail(rs.getString("email"));
    50             user.setPhone(rs.getString("phone"));
    51             list.add(user);
    52         }
    53         
    54         System.out.println(list);
    55     }
    56 
    57 }

      1.2:第二种方式:

        使用配置文件xml方式完成c3p0数据库连接池的应用,是工作之后经常使用的方式:

        1.2.1:在src目录下面创建c3p0-config.xml这个文件名,文件名必须是这个。代码如下所示:

     1 <c3p0-config>
     2     
     3     <!-- c3p0默认配置,下面还可以配置多个数据库 -->
     4     <default-config>
     5         <property name="jdbcUrl">jdbc:mysql://localhost:3306/test
     6         </property>
     7         <property name="driverClass">com.mysql.jdbc.Driver</property>
     8         <property name="user">root</property>
     9         <property name="password">123456</property>
    10         <property name="initialPoolSize">6</property>
    11         <property name="maxPoolSize">50</property>
    12         <property name="maxIdleTime">1000</property>
    13     </default-config>
    14 
    15 </c3p0-config>

        1.2.2:开始使用junit测试,源码如下,自动读取上面的配置文件c3p0-config.xml;所以切记这个配置文件c3p0-config.xml这个名称必须写成这个哦~~~

     1 package com.bie.test;
     2 
     3 import java.beans.PropertyVetoException;
     4 import java.sql.Connection;
     5 import java.sql.PreparedStatement;
     6 import java.sql.ResultSet;
     7 import java.sql.SQLException;
     8 import java.util.ArrayList;
     9 import java.util.List;
    10 
    11 import org.junit.Test;
    12 
    13 import com.bie.po.User;
    14 import com.mchange.v2.c3p0.ComboPooledDataSource;
    15 
    16 /** 
    17 * @author BieHongLi 
    18 * @version 创建时间:2017年3月11日 下午12:40:11 
    19 * 
    20 */
    21 public class C3p0Test2 {
    22 
    23     //使用编码方式实现c3p0数据库连接池
    24     @Test
    25     public void TestXml() throws PropertyVetoException, SQLException{
    26         //第一步:创建连接池核心工具类
    27         ComboPooledDataSource dataSource=new ComboPooledDataSource();
    28         
    29         //第三步:从连接池对象中获取数据库连接
    30         Connection con=dataSource.getConnection();
    31         String sql="select * from user ";
    32         PreparedStatement ps=con.prepareStatement(sql);
    33         ResultSet rs=ps.executeQuery();
    34         
    35         List<User> list=new ArrayList<User>();
    36         while(rs.next()){
    37             User user=new User();
    38             user.setId(rs.getInt("id"));
    39             user.setName(rs.getString("name"));
    40             user.setPassword(rs.getString("password"));
    41             user.setEmail(rs.getString("email"));
    42             user.setPhone(rs.getString("phone"));
    43             list.add(user);
    44         }
    45         
    46         System.out.println("~~~"+list);
    47     }
    48 
    49 }

    方式一和方式二都是使用一个数据库和数据表,演示效果如下所示:


    努力ing,校招开始咯,加油!!!~~~

    下一篇,c3p0和QueryRunner的结合让开发更加简便~~~

  • 相关阅读:
    【TIDB】2、TIDB进阶
    【TIDB】1、TiDb简介
    【Tair】淘宝分布式NOSQL框架:Tair
    【ElasticSearch】查询优化
    【高并发解决方案】9、大流量解决方案
    【高并发解决方案】8、Nginx/LVS/HAProxy负载均衡软件的优缺点详解
    【JVM】jdk1.8-jetty-swap被占满问题排查
    【JVM】记录一次线上SWAP偏高告警的故障分析过程
    【JVM】内存和SWAP问题
    【MySQL】mysql索引结构及其原理
  • 原文地址:https://www.cnblogs.com/biehongli/p/6534694.html
Copyright © 2020-2023  润新知