c3p0只是帮助我们实现在连接池中获取到连接,并不会优化我们的CRUD代码
首先要配置环境:导入jdbcjar包,导入c3p0包(注意是java工程还是javaWeb工程)
不适用配置文件的方式:
ublic static void test2C3p0(){
Connection conn = null;
PreparedStatement ps = null;
try {
//1. 创建datasource
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//2. 设置连接数据的信息
dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost/school?useSSL=false&serverTimezone=UTC");
dataSource.setUser("root");
dataSource.setPassword("root");
//2. 得到连接对象
conn = dataSource.getConnection();
String sql="update account set money=? where id=?";
ps=conn.prepareStatement(sql);
ps.setInt(1,1500);
ps.setInt(2,1);
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
//这里就是释放资源,自己写一个就行
JDBCUtil.release(conn,ps,null);
}
}
使用配置文件(这里配置文件的名字是固定的,c3p0-config.xml,不可以随意写,并且是放在src目录下):
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost/school?useSSL=false&serverTimezone=UTC</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">20</property>
</default-config>
<!-- This app is massive! -->
<!-- <named-config name="oracle">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///web_test4</property>
<property name="user">root</property>
<property name="password">abc</property>
</named-config> -->
</c3p0-config>
public static void testC3p0(){
Connection conn=null;
PreparedStatement ps=null;
try {
//这里自动加载配置文件,所以而配置文件名不能写错
ComboPooledDataSource dataSource=new ComboPooledDataSource();
conn=dataSource.getConnection();
String sql="update account set money=? where id=?";
ps=conn.prepareStatement(sql);
ps.setInt(1,1000);
ps.setInt(2,1);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtil.release(conn,ps,null);
}
}