数据库连接池的学习(四)——Druid连接池

Druid 是目前比较流行的高性能的,分布式列存储的OLAP框架(具体来说是MOLAP)。它有如下几个特点:

① 亚秒级查询

druid提供了快速的聚合能力以及亚秒级的OLAP查询能力,多租户的设计,是面向用户分析应用的理想方式。

②实时数据注入

druid支持流数据的注入,并提供了数据的事件驱动,保证在实时和离线环境下事件的实效性和统一性

③可扩展的PB级存储

druid集群可以很方便的扩容到PB的数据量,每秒百万级别的数据注入。即便在加大数据规模的情况下,也能保证时其效性

④多环境部署

druid既可以运行在商业的硬件上,也可以运行在云上。它可以从多种数据系统中注入数据,包括hadoop,spark,kafka,storm和samza等

⑤丰富的社区

druid拥有丰富的社区,供大家学习

需要的包:druid-1.1.10.jar

首先写一个配置文件:db.propreties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
username=root
password=1234
maxActive=10

接着创建一个druid工具类:DruidUtils

import com.alibaba.druid.pool.DruidDataSource;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class DruidUtils {
    private static DruidDataSource dds;

    static {
        dds = new DruidDataSource();
        Properties p = new Properties();


        try {
            InputStream is = DruidDataSource.class.getResourceAsStream("/db.properties");
            p.load(is);
            // 设置驱动类全称
            dds.setDriverClassName(p.getProperty("driverClassName"));
            // 设置连接的数据库
            dds.setUrl(p.getProperty("url"));
            // 设置用户名
            dds.setUsername(p.getProperty("username"));
            // 设置密码
            dds.setPassword(p.getProperty("password"));
            // 设置最大连接数量
            dds.setMaxActive(Integer.parseInt(p.getProperty("maxActive")));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection() {
        try {
            return dds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    // 关闭资源
    public static void close(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(PreparedStatement st) {

        if (st != null) {
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(ResultSet set) {
        if (set != null) {
            try {
                set.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(Connection conn, PreparedStatement st, ResultSet rt) {
        close(conn);
        close(st);
        close(rt);
    }
}

接着进行数据库的测试:

import org.junit.Test;

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

public class DruidTest {
    @Test
    public void t() throws SQLException {
        Connection conn = DruidUtils.getConnection();

        PreparedStatement ps = conn.prepareStatement("select * from students");
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            String sname = rs.getString("sname");
            System.out.println(sname);
        }

        DruidUtils.close(conn, ps, rs);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41061437/article/details/82859112
今日推荐