普通Java项目如何使用Druid连接池

  首先我们先说一下,什么是连接池?
  连接池是一种创建和管理连接的缓冲池技术,这些连接已经准备好被其他的线程进行调用。
  那为什么要使用连接池呢?
  我们知道,连接的创建和销毁时需要时间的,而连接池就是在服务器初始化的时候,创建好一些连接,然后把它们放到内存中的连接池里,使用的时候,可以直接从内存中获取。使用完成又归还给连接池。这样从内存中获取和归还连接的效率,远远高高每次连接的创建和销毁,大大提高了服务器的性能,所以使用连接池是很用必要的。
  那主流连接池有什么呢?
  现在主流连接池有:Druid、C3P0、DBCP连接池等等。
  我们下面使用的就是Druid连接池。Druid连接池是阿里巴巴开发的一套连接池,是目前Java项目中常用到的连接池技术。
  它的优点有:
  1、Druid连接池对于SQL的性能监控很严格。
  2、Druid连接池的扩展性很好,用户可以自己编写filter拦截JDBC的任意方法,在上面进行扩展,例如进行用户名密码加密,sql日志等等。
  3、Druid连接池支持目前大部分数据库。
在这里插入图片描述
  下面我用一个普通Java的Demo来演示一下Druid数据库的使用。
  JDBC工具类代码

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

/**
 * 这是一个JDBC的工具类
 */
public class JDBCUtils{
    private static final String driverClassName;
    private static final String url;
    private static final String username;
    private static final String password;
    static {
        Properties properties=new Properties();
        try {
            properties.load(new FileInputStream("src/db.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        driverClassName=properties.getProperty("driverClassName");
        url=properties.getProperty("url");
        username=properties.getProperty("username");
        password=properties.getProperty("password");
    }
    public static void loadDriver(){
        try {
            Class.forName(driverClassName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        Connection conn=null;
        loadDriver();
        try {
            conn=DriverManager.getConnection(url,username,password);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return conn;
    }

    public static void release(PreparedStatement prep,Connection conn) throws SQLException {
        prep.close();
        conn.close();
    }

    public static void release(ResultSet rs,PreparedStatement prep,Connection conn) throws SQLException {
        rs.close();
        prep.close();
        conn.close();
    }

    public static void release(Statement statement,Connection conn) throws SQLException {
        statement.close();
        conn.close();
    }
}

  在你的src下创建一个druid.properties文件。
  druid.properties代码:

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8
username=sa
password=123456

  主函数代码:

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.junit.Test;

import javax.sql.DataSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

/**
 * Druid连接池的使用
 */
public class Druiddemo {
    Connection conn=null;
    PreparedStatement prep=null;
    ResultSet rs=null;

    @Test
    public void test() throws Exception {
        //从druid.properties中读取数据
        Properties properties=new Properties();
        properties.load(new FileInputStream("src\\druid.properties"));
        DataSource dataSource= DruidDataSourceFactory.createDataSource(properties);
        conn=dataSource.getConnection();
        prep=conn.prepareStatement("select * from login");
        rs=prep.executeQuery();
        while (rs.next()){
            System.out.println(rs.getString("id"));
            System.out.println(rs.getString("name"));
        }
        JDBCUtils.release(rs,prep,conn);
    }
}

  运行结果
在这里插入图片描述
  最后我们在图片中的红色字体处可以看到,druid连接池已经成功开启了。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值