使用步骤:
1、添加jar包
2、编写配置文件c3p0-config.xml,放在classpath中,或classes目录中(XX项目/src/c3p0-config.xml)
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day14</property>
<property name="user">root</property>
<property name="password">00000000</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
</default-config>
</c3p0-config>
3、编写工具类:
public class C3P0Util {private static DataSource dataSource = new ComboPooledDataSource();
public static DataSource getDataSource() {
return dataSource;
}
//获取连接
public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException("服务器繁忙");
}
}
public static void release(Connection conn,Statement stmt,ResultSet rs){
//关闭连接
if(rs!=null){
try {rs.close();
} catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if(stmt!=null){
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
stmt = null;
}
if(conn!=null){
try {
conn.close();//�ر�
} catch (Exception e) {
e.printStackTrace();
}
conn = null;
}
}
}
4、编写sql语句操作数据库:
public class BookDaoImpl implements BookDao{
public List<Book> findAllBooks() throws SQLException{QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
return qr.query("select * from book", new BeanListHandler<Book>(Book.class));
public void addBook(Book book) throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
qr.update("insert into book values(?, ?, ?, ?, ?, ?)", book.getId(), book.getName(), book.getPrice(), book.getPnum(), book.getCategory(), book.getDescription());
}
}
拓展:
在javaWeb的项目中,一般分为三层:web层、service层以及dao层,
1、web层:负责对表单数据的获取以及对业务逻辑的调用。简单来说就是用户在浏览器中输入数据,调用javaBean中的setXX(Object obj)方法进行获取数据,以及调用Service层的方法,
(1)web.servlet包:每一种操作使用一个类进行操作,类中实现两个方法:doGet方法以及doPost方法。其中doGet方法中实现三步:获取数据、调用业务逻辑、分发转向。
2、service层:负责对数据的处理。简单来说就是对web层以及dao层方法的连接处理,对方法的实现。
(1)service包(接口):
(2)service.impl包(实现):
3、dao层:负责对数据库的连接,这里使用C3p0进行实现连接池
(1)dao包(接口):对数据库操作方法接口
(2)dao.impl包(实现类):对数据库操作方法中,先获取C3P0Util的连接,以及使用QueryRunner类的方法编写sql语句。
(3)domain包(实体类):javabean实现
此外,还有一个Utils包(工具类):完成C3P0重新对连接池的操作方法实现:连接(getConnection)、关闭(close)
如图: