JDBC作为Java连接数据库的核心技术,为开发者提供了标准化的API接口,实现SQL执行与数据交互功能。掌握JDBC操作流程对Java后端开发至关重要。
作为Java与数据库通信的桥梁,JDBC提供标准化接口支持SQL执行,主要功能包括建立数据库连接、发送SQL指令和处理返回结果。
以Oracle数据库为例,需先获取驱动jar包,将其放入项目libs目录后右键选择添加至库。
驱动注册
//推荐使用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();
完整配置包含三大模块:
核心数据源配置
@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