德鲁伊连接池(druid)



一、连接池

1、什么是连接池

简单来说就是一组连接组成的一个池子(集合),称为连接池。
连接池是创建和管理一个连接的缓冲池技术。

2、为什么要用连接池

我们原先在连接数据库时都是用到一次,创建一次连接,不用就关闭,再用的时候再连接。但是一旦访问数据库的请求多了起来,就会很容易占用服务器资源,还耗时。
使用连接池就能很好的解决这种问题。
连接池技术是在服务启动的时候就事先在连接池中放入一定数量的连接对象,当你需要的时候,直接从连接池中拿已经创建好的对象而不是临时去创建一个连接,这样就能提高效率。

二、德鲁伊连接池(druid)

1.介绍

Druid是阿里巴巴开源平台上的一个项目,它结合了C3P0、DBCP、Proxool等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,也是目前最好的数据库连接池之一。

2.代码实操

(1)maven引入jar包

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.6</version>
    </dependency>
    //jdbc要和自己数据库版本匹配
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
    </dependency>

(2)在src下新建 .properties配置文件

编写基本配置参数

url=jdbc:mysql://localhost:3306/login
username=root
password=2020051034
driverClassName=com.mysql.jdbc.Driver
//初始化时建立物理连接的个数
initialSize=5
//连接池能维持的最大连接数
maxActive=10
//获取连接时最大等待时间,单位毫秒
maxWait=2000

点击了解更多配置文件的参数详情

(3)编写DBUtils工具类,通过druid连接池连接数据库并封装查询操做

import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class DBUtils {
    static Connection conn;
    static PreparedStatement presql;
    static ResultSet rs;
    static String selectsql="SELECT * FROM student where name=? ";
    static String n;//name

    public static void getconnection() {
        //1.从类路径下加载配置文件,获取一个输入流。如果不指定路径,默认是读取同一个包下资源文件
        InputStream inputStream = DBUtils.class.getResourceAsStream("/druid.properties");
        //2.使用Properties对象的方法将配置文件中属性加载到Properties对象中
        Properties properties = new Properties();
        //加载了配置文件中所有的属性
        try {
            properties.load(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //3.通过druid的工厂类创建连接池
        DataSource dataSource = null;
        try {
            dataSource = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //4.从连接池中获取连接对象
        try {
            conn=dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
   //编写select操作方法
    public static ResultSet select(String a){
       //调用上面自己封装的getconnection方法连接数据库
        getconnection();
        //将测试类中传入的name参数赋值给n
        n=a;
        //通过预处理对象处理sql语句
        try {
            presql=conn.prepareStatement(selectsql);
            presql.setString(1,n);
        } catch (SQLException e) {
            e.printStackTrace();
        }
       //获取结果集对象
        try {
            rs=presql.executeQuery();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //返回结果集对象
        return rs;
    }


}

(4)编写测试类

import org.junit.Test;
import java.sql.ResultSet;
import java.sql.SQLException;

public class test {

    @Test
    public void test2() throws SQLException {
        //通过工具类得到结果集对象
        ResultSet res=DBUtils.select("dwd");
        //输出当前连接池中我们所用的连接对象
        System.out.println(DBUtils.conn);
        while (res.next()){
            //打印我们从数据库中得到的数据
           System.out.println("名字:"+res.getString("name"));
            System.out.println("密码:"+res.getString("password"));
            System.out.println("成绩:"+res.getString("score"));
        }
        //关闭连接,连接对象回到连接池
        DBUtils.conn.close();
    }
}

(5)运行结果在这里插入图片描述


  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Druid)是一个优秀的数据库连接,特别适用于高并发的Java应用程序。它通过有效地管理连接,提供了更好的性能和资源利用率。 在Java中使用连接,你可以按照以下步骤进行操作: 1. 首先,你需要在项目中引入的依赖。你可以在项目的构建文件(如pom.xml)中添加以下依赖项: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.22</version> </dependency> ``` 2. 创建一个配置类来配置连接。你可以使用以下代码示例: ```java import com.alibaba.druid.pool.DruidDataSource; public class DruidConfig { private static final String url = "jdbc:mysql://localhost:3306/database"; private static final String username = "username"; private static final String password = "password"; public static DruidDataSource getDataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); // 还可以设置其他配置项,如最大连接数、初始化连接数等 return dataSource; } } ``` 3. 在应用程序中使用连接。你可以按照以下代码示例获取数据库连接: ```java import com.alibaba.druid.pool.DruidDataSource; public class Main { public static void main(String[] args) { DruidDataSource dataSource = DruidConfig.getDataSource(); Connection connection = null; try { connection = dataSource.getConnection(); // 执行数据库操作 } catch (SQLException e) { e.printStackTrace(); } finally { if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } ``` 通过这些步骤,你可以在Java应用程序中成功使用连接来管理数据库连接。记得在使用完连接后及时释放连接,以免造成资源浪费。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值