1.编写连接池类
public class DDDatasource implements DataSource {
private LinkedList<Connection> connections = new LinkedList<>();
private static Properties config = new Properties();
class DDConnection implements Connection{
private Connection conn;
public DDConnection(Connection conn){
this.conn = conn;
}
@Override
public void close() throws SQLException{
connections.add(conn);
}
@Override
public boolean isClosed() throws SQLException {
return conn.isClosed();
}
static {
try {
InputStream in = DDDatasource.class.getClassLoader().getResourceAsStream("dddatasource.properties");
config.load(in);
Class.forName(config.getProperty("jdbc.driver"));
}catch (Exception e){
e.printStackTrace();
throw new RuntimeException("加载驱动失败");
}
}
public DDDatasource(){
try{
for(int i = 0;i < Integer.valueOf(config.getProperty("jdbc.initConn"));i++){
Connection connection = DriverManager.getConnection(config.getProperty("jdbc.url"),config.getProperty("jdbc.user"),config.getProperty("jdbc.password"));
connections.add(connection);
}
}catch (Exception e){
throw new RuntimeException("初始化驱动失败");
}
}
@Override
public Connection getConnection() throws SQLException {
Connection connection = connections.removeFirst();
return new DDConnection(connection);
}
}
2.编写配置文件
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/community?useSSL=false
jdbc.user = root
jdbc.password = 1234
jdbc.initConn = 10
3.调用连接池类获得连接对象
DDDatasource datasource = new DDDatasource();
Connection connection = datasource.getConnection();
System.out.println(connection);
connection.close();
4.当使用其他非JDBC连接池时,将上面的DDDatasource替换成对应的连接池类即可,如Druid时
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl("jdbc:mysql://localhost:3306/community?useSSL=false");
datasource.setDriverClassName("com.mysql.jdbc.Driver");
datasource.setUsername("root");
datasource.setPassword("1234");
Connection connection = datasource.getConnection();
System.out.println(connection);
connection.close();