1、Druid简介
Druid连接池是一个开源的Java数据库连接池,由阿里巴巴公司开发和维护。
它提供了高性能、可靠性和可扩展性的数据库连接管理功能,适用于各种Java应用程序。
Druid连接池的主要特点包括:
1. 高性能:Druid连接池采用了一系列优化策略,如预编译语句缓存、连接池复用等,
以提高数据库访问的性能。
2. 可靠性:Druid连接池具备自动检测和修复连接的功能,可以有效地避免因数据库
连接异常而导致的应用程序崩溃。
3. 可扩展性:Druid连接池支持动态调整连接池大小、监控和统计等功能,可以根据
应用程序的需求进行灵活配置和扩展。
4. 监控和统计:Druid连接池内置了丰富的监控和统计功能,可以实时查看连接池
的使用情况、SQL执行情况等,方便开发人员进行性能调优和故障排查。
5. 安全性:Druid连接池支持防御SQL注入攻击、密码加密等安全特性,保障数据库访问的安全性。
在Java开发中,druid.properties是用于配置Druid连接池的配置文件。下面是配置Druid连接池的druid.properties文件的基本方法:
创建druid.properties文件:在你的项目中创建一个名为druid.properties的文件,代码如下。
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ms?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username=root
password=root
initialSize = 5
maxActive = 10
maxWait = 3000
ms: 数据库名称
username: 用户
password: 密码
2、配置项说明:在druid.properties文件中,你可以添加Druid连接池的各种配置项,每个配置项由键值对的形式表示。以下是一些常用的配置项:
url:数据库的URL。
username:数据库的用户名。
password:数据库的密码。
driverClassName:数据库驱动类名。
initialSize:连接池初始化大小。
maxActive:最大活跃连接数。
minIdle:最小空闲连接数。
maxWait:获取连接的最大等待时间。
validationQuery:用于校验连接是否有效的SQL语句。
testOnBorrow:是否在获取连接时校验连接的有效性。
testWhileIdle:是否在连接空闲时校验连接的有效性。
3、将druid.properties文件放置到正确的位置:将druid.properties文件放置在类路径下,通常是放置在src/main/resources目录下。
4、德鲁伊连接池配置
在pom.xml文件中添加以下代码:
<!-- Maven 依赖 德鲁伊连接池配置-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.11</version>
</dependency>
<!-- 添加mysql的依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
4、编写数据库连接的工具类 JDBCUtil
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
/**
* @author Orange
* @date 2023/4/3 -8:42
*/
public class JDBCUtil {
//1.定义成员变量
private static DataSource ds;
static {
try {
//1.加载配置文件
Properties pro = new Properties();
pro.load(JDBCUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
//2.获取DataSource
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取连接
*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/**
* 释放资源
*/
public static void close(PreparedStatement stmt, Connection conn){
close(null,stmt,conn);
}
public static void close(ResultSet rs, PreparedStatement stmt, Connection conn){
if (rs!=null){
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (stmt!=null){
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();//归还连接
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
/**
* 获取连接池方法
*/
public static DataSource getDataSource(){
return ds;
}
public static void main(String[] args) {
try {
Connection connection = JDBCUtil.getConnection();
System.out.println(connection);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
5、测试数据库连接是否正常
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.PreparedStatement;
/**
* @author Orange
* @date 2024/4/23 -9:22
*/
public class UserDao {
// 定义一个方法,根据用户名和密码查找用户
public User findUser(String username,String password) throws Exception {
User user = null;
// 定义sql语句,连接数据库,执行查询,将结果集封装到user中
String sql = "select * from tuser where username = ? and password =?";
Connection connection = JDBCUtil.getConnection();
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1,username);
pstmt.setString(2,password);
ResultSet rs = pstmt.executeQuery();
if(rs.next()){
user = new User();
user.setUid(rs.getInt("uid"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setUtype(rs.getString("utype"));
}
JDBCUtil.close(rs,pstmt,connection);
return user;
}
}
6、补充
以上是使用druid.properties文件配置Druid连接池的基本方法。根据你的具体需求,你可以添加更多的配置项来优化连接池的性能和行为。
笔者水平有限,如有不当之处,请予指正~
非常感谢各位耐心观看!如果看到这句话,并且觉得有用的话,不妨点个赞呗~~~