11月24, 2020

dbcp数据库连接池

使用dbcp连接池,进行数据库的CRUD,涉及jar包:commons-dbcp2-2.8.0.jar(连接池包)、commons-pool2-2.9.0.jar(dbcp依赖该包)、commons-logging-1.2.jar(接口日志包)、mysql-connector-java-5.1.37-bin.jar(数据库连接驱动)、commons-dbutils-1.7.jar(基本CRUD操作)

DbcpUtils数据库连接池配置:

package learn.javase.dbcppool;

import org.apache.commons.dbcp2.BasicDataSource;
/**
 * 利用DBCP链接数据库
 * @author Jole
 *
 */
public class DbcpUtils {

    private static BasicDataSource dataSource = new BasicDataSource();

    static {
        //必配参数
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");
        dataSource.setUsername("root");
        dataSource.setPassword("11111");

        //可配参数
        dataSource.setInitialSize(10);
        dataSource.setMaxIdle(8);
        dataSource.setMinIdle(2);
    }

    public static BasicDataSource getConnecton() {
        return dataSource;
    }
}

利用DbcpUtils进行数据库的CRUD操作:

package learn.javase.dbcppool;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;

/**
 * 利用DBCP数据库连接池增加、查询
 * @author Jole
 *
 */
public class DbcpUtilsDemo {

    private static QueryRunner qr = new QueryRunner(DbcpUtils.getConnecton());

    public static void main(String[] args) {
        // TODO Auto-generated method stub
//        insertData();
        findData();
    }

    public static void insertData() {
        String sql = "insert into my_user(u_id,u_name,u_age) values(?,?,?)";
        Object[] params = {"777777","dbcpUTils",30};
        try {
            int num = qr.update(sql, params);
            System.out.println(num);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void findData() {
        String sql = "select * from my_user";
        try {
            List<List<Object[]>> objs = qr.execute(sql, new ArrayListHandler());
            for(List<Object[]> obj : objs ) {
                for(Object ob : obj) {
                    System.out.println(ob);
                }
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

除了DBCP数据库连接池外,还有目前比较常用的c3p0、Druid等数据库链接池。

本文链接:https://www.yanxizhu.com/post/dbcp.html

-- EOF --

Comments