连接池是一种常用的技术,为什么需要连接池呢?这个需要从TCP说起。假如我们的服务器跟数据库没有部署在同一台机器,那么,服务器每次查询数据库都要先建立连接,一般都是TCP链接,建立连接就需要3次握手了,假设后台服务跟数据库的单程的访问时间需要10ms,那么光是建立连接就花了30ms,并且TCP还有慢启动的机制,实际上一次查询可能还不止1次TCP来回,查询效率就会大大降低。
官方下载地址:Maven Repository: com.alibaba » druid (mvnrepository.com)https://mvnrepository.com/artifact/com.alibaba/druid
1.建立maven项目在pom.xml 添加相关的依赖
com.alibaba druid1.2.7 mysql mysql-connector-java8.0.26 junit junit4.13.2 test org.projectlombok lombok1.18.20 provided
2.编写代码
方式一
public class Demo {
public static void main(String[] args) throws SQLException {
var ds = new DruidDataSource();
ds.setUrl("jdbc:mysql:/d1?user=root");
var conn = ds.getConnection();
System.out.println(conn);
}
}
d1为所连接的数据库 root为账号 未设密码
方式二
public class Demo {
public static void main(String[] args) throws SQLException {
var ds = new DruidDataSource();
ds.setDriverClassName("com.mysql.cj.jdbc.Driver");
ds.setUrl("jdbc:mysql:/d1");
ds.setUsername("root");
ds.setPassword("");
var conn = ds.getConnection();
System.out.println(conn);
}
}
username为数据库登录账号 password为登录密码,
方式三
public class Demo {
public static void main(String[] args) throws SQLException {
var ds = new DruidDataSource();
Properties m1 = new Properties();
m1.setProperty("druid.url","jdbc:mysql:/d1?user=root");
ds.setConnectProperties(m1);
var conn = ds.getConnection();
System.out.println(conn);
}
}
运行结果可以看到已经连接到数据库,如下图:
可以对数据库中的表进行操作,比如查看数据库中的表
public class Demo {
public static void main(String[] args) throws SQLException {
var ds = new DruidDataSource();
Properties m1 = new Properties();
m1.setProperty("druid.url","jdbc:mysql:/d1?user=root");
ds.setConnectProperties(m1);
var conn = ds.getConnection();
System.out.println(conn);
try {
var pst = conn.prepareStatement("show tables");
var rs = pst.executeQuery();
while (rs.next()){
System.out.println(rs.getString(1));
}
} catch (Exception e){
e.printStackTrace();
}
}
}
可以看到运行结果如下图:
方式四 在项目建立配置资源文件,resource目录下
在resource目录下新建 db.properties文件
对db.properties进行如下配置
druid.driverClassName=com.mysql.cj.jdbc.Driver druid.url=jdbc:mysql:/d1 druid.username=root druid.password=
然后编写代码段
public class Demo {
public static void main(String[] args) throws SQLException, IOException {
var ds = new DruidDataSource();
Properties db = new Properties();
var is = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");
db.load(is);
ds.setConnectProperties(db);
var conn = ds.getConnection();
try {
var pst = conn.prepareStatement("show tables");
var rs = pst.executeQuery();
while (rs.next()){
System.out.println(rs.getString(1));
}
} catch (Exception e){
e.printStackTrace();
}
同样可以连接到数据库



