学习笔记*JDBC 数据连接池C3P0与QueryRunner开源框架的使用

时间:2021-03-25 23:17:21

使用步骤:

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)

如图:

学习笔记*JDBC 数据连接池C3P0与QueryRunner开源框架的使用