一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Java数据库连接:JDBC:DRUID

时间:2026-05-21 19:30:01 编辑:袖梨 来源:一聚教程网

JDBC作为Java连接数据库的核心技术,为开发者提供了标准化的API接口,实现SQL执行与数据交互功能。掌握JDBC操作流程对Java后端开发至关重要。

1.JDBC简介

作为Java与数据库通信的桥梁,JDBC提供标准化接口支持SQL执行,主要功能包括建立数据库连接、发送SQL指令和处理返回结果。

  1. 驱动程序加载
  2. 设置连接参数
  3. 创建Statement对象
  4. 执行SQL获取结果
  5. 释放数据库连接

2.JDBC配置

2.1建立连接

以Oracle数据库为例,需先获取驱动jar包,将其放入项目libs目录后右键选择添加至库。

2.2基础配置

驱动注册

    //推荐使用Class.forName方式加载驱动
    Class.forName("oracle.jdbc.driver.OracleDriver");
    //获取数据库连接
	Connection con = DriverManager.getConnection(  
			"jdbc:oracle:thin:@localhost:1521:XE",  
			"XIAOMING",  
			"123456"  
	);

Statement配置

  • prepareStatement支持SQL预编译,能有效防止注入攻击,适合重复执行场景;
  • createStatement不进行预处理,存在安全风险,且每次需重新构建SQL语句;
String sql = "select * from family_member where name";
Statement stat = con.createStatement();
ResultSet resultSet = stat.executeQuery(sql);
while(resultSet.next()){  
	System.out.println(resultSet.getString("name")  
						+"t"  
						+resultSet.getString("gender")  
	);  
}
String sql = "select * from family_member where name = ?";
PreparedStatement stat = con.prepareStatement(sql);
stat.setString(1,"爸爸");
ResultSet resultSet = stat.executeQuery();
while(resultSet.next()){  
	System.out.println(resultSet.getString("name")  
						+"t"  
						+resultSet.getString("gender")  
	);  
}

资源释放

resultSet.close();  
stat.close();  
con.close();

3.Spring实战 --手动构建DataSource

3.1配置类结构

完整配置包含三大模块:

  • 数据源配置:连接参数与连接池设置
  • 监控Servlet:可视化监控界面
  • Web过滤器:关联HTTP请求与SQL执行

3.2配置

核心数据源配置

@Bean  
public DataSource dataSource() throws SQLException {  
    DruidDataSource ds = new DruidDataSource();  
    //基础连接配置
    ds.setUrl("jdbc:oracle:thin:@localhost:1521:XE");  
    ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");  
    ds.setUsername("XIAOMING");  
    ds.setPassword("123456");  
    //连接池参数
    ds.setMinIdle(5);  
    ds.setMaxWait(60000);  
    ds.setMaxActive(20);  
    ds.setInitialSize(5);  
    //空闲连接管理
    ds.setMinEvictableIdleTimeMillis(60000);  
	ds.setMaxEvictableIdleTimeMillis(900000);  
    ds.setTimeBetweenEvictionRunsMillis(30000);  
    //连接检测
    ds.setValidationQuery("SELECT 1 FROM DUAL");  
    ds.setTestWhileIdle(true);  
    ds.setTestOnBorrow(false);  
    ds.setTestOnReturn(false);  
    //连接回收
    ds.setRemoveAbandoned( true);  
    ds.setRemoveAbandonedTimeout(180);  
	ds.setLogAbandoned(true);  
	//扩展功能
    ds.setFilters("stat,wall");  
    ds.setPoolPreparedStatements(true);  
    ds.setUseGlobalDataSourceStat( true);  
    return ds;  
}

监控Servlet配置

@Bean  
public ServletRegistrationBean statViewServlet