C3P0是一款开源免费的连接池,连接池的主要作用就是提高性能。
使用方法:
- 导入jar包:c3p0的jar包和mysql的jar包(小编使用的是mysql数据库),这两个jar包可以自行百度下载。也可以给小编留言哦。
编写配置文件c3p0-config.xml
- 配置文件的名称必须为:c3p0-config.xml;
- 一般情况放在src目录里面。
文件的配置(以下是主要配置,其他选项可以参考手册)
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <!-- 连接数据库的参数 --> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///ning</property> <property name="user">root</property> <property name="password">root</property> <!-- 初始化连接数 --> <property name="initialPoolSize">5</property> <!-- 最大连接数 --> <property name="maxPoolSize">20</property> </default-config> <named-config name="ning"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///ning</property> <property name="user">root</property> <property name="password">root</property> </named-config> </c3p0-config>
工具类
package com.sunxiaoning.jdbc.utils; import java.sql.Connection; import java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3P0Utils { private static ComboPooledDataSource dataSource = new ComboPooledDataSource("itheima"); /** * 获得数据源(连接池) * @return */ public static ComboPooledDataSource getDataSource() { return dataSource; } /** * 获得连接 * @return */ public static Connection getConnection() { try { return dataSource.getConnection(); } catch (SQLException e) { throw new RuntimeException(); } } /** * 归还连接 * @param conn */ public static void closeConn(Connection conn){ try { if(conn!=null && conn.isClosed()){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } }
附录:测试类
package com.sunxiaoning.jdbc.test; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import org.junit.jupiter.api.Test; import com.sunxiaoning.jdbc.utils.C3P0Utils; /** * 测试C3P0 * @author sunxiaoning * */ package com.sunxiaoning.jdbc.test; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import org.junit.jupiter.api.Test; import com.sunxiaoning.jdbc.utils.C3P0Utils; /** * 测试C3P0 * @author sunxiaoning * */ public class TestC3P0 { @Test public void testAddUser() { Connection conn = null; PreparedStatement pstmt = null; try { conn = C3P0Utils.getConnection(); String sql = "insert into users values(null,?,?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, "小宁"); pstmt.setString(2, "qwe"); int row = pstmt.executeUpdate(); if(row>0) { System.out.println("添加成功"); }else { System.out.println("添加失败"); } } catch (SQLException e) { throw new RuntimeException(); }finally { C3P0Utils.closeConn(conn); if (pstmt!=null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }