ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库连接池,DBUtil的模板,dbcp,c3p0

2019-11-17 15:53:48  阅读:257  来源: 互联网

标签:String c3p0 dbcp connection static sql public 连接池


数据库连接池,DBUtil的模板,Druid使用(重点)

一、DBUtil模板

public class DBUtilTest {

    public static Connection connection;
    public static final String URL = "jdbc:mysql:///demo";
    public static final String USERNAME = "";
    public static final String PASSWORD = "";

    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static void testQuery() throws SQLException {
        connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        String sql = "select * from emp where id = ?";
        QueryRunner runner = new QueryRunner();
        Emp query = runner.query(connection, sql, new BeanHandler<Emp>(Emp.class), 1);
        System.out.println(query);
    }

    public static void testQuery2() throws SQLException {
        connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        String sql = "select * from emp";
        QueryRunner runner = new QueryRunner();
        List<Emp> query = runner.query(connection, sql, new BeanListHandler<Emp>(Emp.class));
        query.forEach((x)->{
            System.out.println(x);
        });
    }

    public static void insert() throws SQLException {
        connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        String sql = "insert emp values(null,?,?)";
        QueryRunner runner = new QueryRunner();
        runner.update(connection,sql,1,2);
    }
    public static void main(String[] args) throws SQLException {
        testQuery2();
    }
}

二、数据库连接池

数据库连接池是为了减少频繁开关连接的时间,分析应该具备几个属性

1.初始大小

2.每次扩容大小

3.连接池最大个数

4.空闲连接死亡时间

各种数据库连接池

  • DBCP
  • C3P0
  • Druid
  • hikariCP
2.1.DBCP模板
public static void main(String[] args) throws SQLException {
        // 数据库连接池资源
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        basicDataSource.setUrl("jdbc:mysql:///demo");
        basicDataSource.setUsername("");
        basicDataSource.setPassword("");

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet rs = null;

        connection = basicDataSource.getConnection();
        String sql = "select * from emp";
        preparedStatement = connection.prepareStatement(sql);
        rs = preparedStatement.executeQuery();
        while (rs.next()){
            System.out.println(rs.getInt(1)+
                    rs.getString(2)+
                    rs.getString(3));
        }
        connection.close();
    }
2.2.C3P0
public static void main(String[] args) throws PropertyVetoException, SQLException {
    ComboPooledDataSource cpds = new ComboPooledDataSource();
    cpds.setDriverClass( "com.mysql.cj.jdbc.Driver" ); //loads the jdbc driver
    cpds.setJdbcUrl( "jdbc:mysql://120.78.206.78:3306/demo" );
    cpds.setUser("root");
    cpds.setPassword("Root123..");
    cpds.setMaxStatements( 180 );
    Connection conn = cpds.getConnection();
    System.out.println(conn);
    conn.close();
}

第二种参照官网,进行xml配置

2.3.druid

druid是性能最好的数据库连接池

dbcp和c3p0区别,c3p0会自动回收不使用的连接

标签:String,c3p0,dbcp,connection,static,sql,public,连接池
来源: https://www.cnblogs.com/littlepage/p/11876764.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有