java--连接池

连接池作用:

每次连接数据库时,都需创建及销毁连接;在频繁访问数据库的情况下,是非常耗费资源的

连接池可以批量创建多个连接,提升性能,避免资源浪费.

我们可以将建立连接和销毁连接封装起来,方便调用

private static ArrayList<Connection>  list= new ArrayList();
Class.forName("com.mysql.jdbc.Driver");
for(int i = 0; i < 3; i++) {//批量建立链接
    Connection conn = DriverManager.getConnection("jdbc:mysql:///mydb_21", "root", "root");
    list.add(conn);//放入集合

取连接:

public Connection getConnection() throws SQLException{//取链接
    if(list.size() <= 0){//集合中无可用链接则重新创建
        for(int i = 0; i < 3; i++){
            Connection conn = DriverManager.getConnection("jdbc:mysql:///mydb_21","root","root");
        }
    }
    return list.remove(0);
}

还连接 :

public void retConnection(Connection conn){//还链接
        if(conn != null)
            list.add(conn);
    }

整体代码:

import javax.sql.DataSource;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.ArrayList;
import java.util.logging.Logger;

public class Mypool2 implements DataSource{//批量建立 防止重复
    //泛型保证只有connection类可被存入集合 取链接时返回的数据用connection类接收时不会报错
    private static ArrayList<Connection>  list= new ArrayList();
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            for(int i = 0; i < 3; i++) {//批量建立链接并放入集合
                Connection conn = DriverManager.getConnection("jdbc:mysql:///mydb_21", "root", "root");
                list.add(conn);
            }
        } catch (Exception e){
            System.out.println(e.getMessage());
            }
        }


        public Connection getConnection() throws SQLException{//取链接
            if(list.size() <= 0){//集合中无可用链接则重新创建
                for(int i = 0; i < 3; i++){
                    Connection conn = DriverManager.getConnection("jdbc:mysql:///mydb_21","root","root");
                }
            }
            return list.remove(0);
        }

    @Override
    public Connection getConnection(String username, String password) throws SQLException {
        return null;
    }

    public void retConnection(Connection conn){//还链接
            if(conn != null)
                list.add(conn);
        }

    @Override
    public <T> T unwrap(Class<T> iface) throws SQLException {
        return null;
    }

    @Override
    public boolean isWrapperFor(Class<?> iface) throws SQLException {
        return false;
    }

    @Override
    public PrintWriter getLogWriter() throws SQLException {
        return null;
    }

    @Override
    public void setLogWriter(PrintWriter out) throws SQLException {

    }

    @Override
    public void setLoginTimeout(int seconds) throws SQLException {

    }

    @Override
    public int getLoginTimeout() throws SQLException {
        return 0;
    }

    @Override
    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
        return null;
    }
}

 

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值