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的结合让开发更加简便~~~