连接对象(Connection)
先要创建,使用完后销毁
连接池
取对象来进行使用,放回连接池
原理
首先连接池里面有固定连接可以取出来使用,用完后还给连接池
当连接池的连接呗使用后,要创建连接
private String url="jdbc:mysql://localhost:3306/2109b"; private String username="root"; private String password="123456"; //第一步声明一个linkedlist集合(连接池) private LinkedList<Connection> connections=new LinkedList<>(); //初始化:创建5个连接(构造函数,静态代码) public Mydatasource(){ for (int i = 1; i <=5 ; i++) { try { //创建连接 Connection connection= DriverManager.getConnection(url,username,password); connections.add(connection); } catch (SQLException e) { throw new RuntimeException(e); } } } //第三步:如果连接池中有连接,获取连接池中连接,如果没有,就创建新的连接 public Connection getConnection(){ Connection connection=null; if (connections.size()>0){ System.out.println("连接池获取"); connection=connections.removeFirst(); }else { //表示是连接池有连接 System.out.println("连接池没有连接,重新创建"); try { connection=DriverManager.getConnection(url,username,password); } catch (SQLException e) { throw new RuntimeException(e); } } return connection; } //第四步:归还连接,将取走的连接增加到连接池的尾部 public void addBack(Connection connection){ connections.addLast(connection); }
@Test public void getDatasource(){ Mydatasource mydatasource=new Mydatasource();//产生对象,已经有五个connection System.out.println(mydatasource.getConnection()); System.out.println(mydatasource.getConnection()); System.out.println(mydatasource.getConnection()); System.out.println(mydatasource.getConnection()); System.out.println(mydatasource.getConnection()); }