JDBC —— DRUID连接池

25 篇文章 0 订阅
13 篇文章 0 订阅
DRUID介绍

​ Druid是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是国内目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。如:一年一度的双十一活动,每年春运的抢火车票。

Druid的下载地址:https://github.com/alibaba/druid 或者 maven仓库

DRUID连接池使用的jar包:druid-1.0.9.jar


定义User标准类

代码示例:

package com.Utils;

/**
 * @Author: Mr.Xu
 * @description: 用户类
 * @Date: 2021/10/14  17:52
 */
public class User {
    private int id;
    private String username;
    private String password;
    private String nickname;

    public User() {
    }

    public User(int id, String username, String password, String nickname) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.nickname = nickname;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", nickname='" + nickname + '\'' +
                '}';
    }
}


DRUID的使用

通过硬编码方式
  • 思路:

    • 创建Druid连接池对象
    • 设置连接池的配置参数
    • 通过连接池获得连接
    • 预编译sql语句,得到预编译对象
    • 设置sql语句参数
    • 执行sql语句,处理结果
    • 释放资源

代码示例:

package com.DRUID;

import com.Utils.User;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @Author: Mr.Xu
 * @description: DRUID测试 DRUID连接池 硬编码
 * @Date: 2021/10/14  21:54
 */
public class Test_1 {
    public static void main(String[] args) throws SQLException {
        //- 创建Druid连接池对象
        DruidDataSource dds = new DruidDataSource();
        // - 设置连接池的配置参数
        dds.setDriverClassName("com.mysql.jdbc.Driver");
        dds.setUrl("jdbc:mysql://localhost:3306/day19_1");
        dds.setUsername("root");
        dds.setPassword("toor");
        // - 通过连接池获得连接
        DruidPooledConnection connection = dds.getConnection();

        // - 预编译sql语句,得到预编译对象
        String sql = "select * from user where id = ?";
        PreparedStatement pps = connection.prepareStatement(sql);

        // - 设置sql语句参数
        pps.setInt(1,4);
        // - 执行sql语句,处理结果
        ResultSet resultSet = pps.executeQuery();
        //定义变量user, 来存放数据,赋初始值为null
        User user = null;

        //循环获取数据
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String username = resultSet.getString("username");
            String password = resultSet.getString("password");
            String nickname = resultSet.getString("nickname");
            user = new User(id,username,password,nickname);
            System.out.println(user);
        }

        // - 释放资源
        resultSet.close();
        pps.close();
        connection.close();


    }
}


通过配置文件方式
  • 思路:

    • 导入Druid的jar包
    • 拷贝druid.properties配置文件到src路径下
      • 配置文件名可以修改
      • 配置文件建议放在src路径下
      • 配置文件中键名与setXXX方法的方法名对应( set方法去掉set,然后首字母变小写)
    • 使用:
      • 创建Properties对象,加载配置文件中的数据
      • 创建Druid连接池对象,传入Properties对象—>不会自动读src路径下的配置文件
      • 通过连接池获得连接
      • 预编译sql语句,得到预编译对象
      • 设置sql语句参数
      • 执行slq语句,处理结果
      • 释放资源
        代码示例:
package com.DRUID;

import bean.JDBCUtils;
import com.Utils.User;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

/**
 * @Author: Mr.Xu
 * @description: 通过配置文件方式
 * @Date: 2021/10/14  23:20
 */
public class Test_2 {
    public static void main(String[] args) throws Exception {
        //- 创建Properties对象,加载配置文件中的数据
        Properties properties = new Properties();
        InputStream is = Test_2.class.getClassLoader().getResourceAsStream("druid.properties");
        properties.load(is);
        // - 创建Druid连接池对象,传入Properties对象--->不会自动读src路径下的配置文件
        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
        // - 通过连接池获得连接
        Connection connection = dataSource.getConnection();
        // - 预编译sql语句,得到预编译对象
        String sql = "select * from user where id = ?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        // - 设置sql语句参数
        preparedStatement.setInt(1,5);
        // - 执行slq语句,处理结果
        ResultSet resultSet = preparedStatement.executeQuery();
        //定义user变量存放数据,初始值为null
        User user = null;

        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String username = resultSet.getString("username");
            String password = resultSet.getString("password");
            String nickname = resultSet.getString("nickname");
            user = new User(id,username,password,nickname);

        }
        // - 释放资源
        JDBCUtils.release(resultSet,preparedStatement,connection);
        System.out.println(user);
    }
}


Druid工具类的制作
  • 步骤:
    • 0.定义一个DataSource成员变量
    • 1.在静态代码块中,加载配置文件,创建Druid连接池对象
    • 2.提供一个公共的静态方法获得连接池
    • 3.提供一个公共的静态方法获得连接
    • 4.提供一个公共的静态方法是否资源

代码示例:

package com.Utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * @Author: Mr.Xu
 * @description:
 * @Date: 2021/10/14  23:22
 */
public class DRUIDUilts {
    //- 0.定义一个DataSource成员变量
    private static DataSource dataSources;
    // - 1.在静态代码块中,加载配置文件,创建Druid连接池对象
    static {

        try {
            Properties properties = new Properties();
            InputStream resourceAsStream = DRUIDUilts.class.getClassLoader().getResourceAsStream("druid.properties");
            properties.load(resourceAsStream);

            dataSources = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // - 2.提供一个公共的静态方法获得连接池
    public static DataSource getDataSources(){
        return dataSources;
    }
    // - 3.提供一个公共的静态方法获得连接
    public static Connection getConnection() throws SQLException {
        return dataSources.getConnection();
    }
    // - 4.提供一个公共的静态方法是否资源
    public static void resultSet(ResultSet resultSet ,Statement statement , Connection connection) throws SQLException {
        if (resultSet != null){
            resultSet.close();
        }
        if (statement != null){
            statement.close();
        }
        if (connection != null){
            connection.close();
        }
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Donne_CN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值