一、什么是Spring JDBC?
什么是JDBC?
JDBC(Java Database Connectivity)是 Java 語言訪問數據庫的標準 API,它定義了一組接口和類,允許 Java 程序與各種數據庫進行交互。JDBC 提供了執行 SQL 語句、處理結果集、管理事務等功能,是 Java 與數據庫之間的橋梁。
什么是Spring JDBC?
Spring JDBC 是 Spring 框架提供的一個數據訪問模塊,它簡化了 JDBC 的使用,封裝了大量重復的代碼,如資源管理、異常處理等。Spring JDBC 的核心是JdbcTemplate
類,它提供了執行 SQL 查詢、更新和存儲過程調用的方法,同時處理了底層 JDBC 資源的創建和釋放,大大減少了樣板代碼。
JdbcTemplate類:
Spring JDBC 是 Spring 框架提供的一個數據訪問模塊,它簡化了 JDBC 的使用,封裝了大量重復的代碼,如資源管理、異常處理等。Spring JDBC 的核心是JdbcTemplate
類,它提供了執行 SQL 查詢、更新和存儲過程調用的方法,同時處理了底層 JDBC 資源的創建和釋放,大大減少了樣板代碼。
(1)execute方法:可以用于執行任何SQL語句,一般用于執行DDL語句。
(2)update、batchUpdate方法:用于執行新增、修改與刪除等語句。
(3)query和queryForXXX方法:用于執行查詢相關的語句。
(4)call方法:用于執行數據庫存儲過程和函數相關的語句。
二、實際操作
1.Maven POM文件配置
作用:
spring-context
:提供 Spring 的 IoC 容器功能spring-jdbc
:提供 Spring JDBC 模塊的核心類mysql-connector-java
:MySQL 數據庫的驅動程序junit
:用于編寫和運行單元測試
<dependencies><!-- Spring Core --><!--spring-context:提供 Spring 的 IoC 容器功能--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.21</version></dependency><!--spring-jdbc:提供 Spring JDBC 模塊的核心類--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.21</version></dependency><!--mysql驅動包,MySQL 數據庫的驅動程序--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><!-- Junit 測試 用于編寫和運行單元測試 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>
?2.User實體類
作用:
- 對應數據庫中的
user
表- 用于封裝從數據庫查詢到的數據
BeanPropertyRowMapper
會自動將結果集映射到這個類的實例
public class User {private Integer id;private String username;private Date birthday;private String sex;private String address;@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", birthday=" + birthday +", sex='" + sex + '\'' +", address='" + address + '\'' +'}';}public User() {} // setter/getter方法
}
?3.Spring配置文件(SpringJBDC.xml)
作用:
dataSource
:配置數據庫連接信息
driverClassName
:MySQL 驅動類url
:數據庫連接 URLusername/password
:數據庫登錄憑證jdbcTemplate
:Spring JDBC 的核心類
- 通過
dataSource
屬性注入數據源- 負責執行 SQL 語句并處理結果
DriverManagerDataSource
?是 Spring 框架提供的一個簡單的數據源實現類,位于?org.springframework.jdbc.datasource
?包中。它用于創建和管理數據庫連接,是 Spring JDBC 模塊的基礎組件之一。
核心作用
DriverManagerDataSource
?的主要功能是:
- 封裝數據庫連接信息(URL、用戶名、密碼等)。
- 基于 JDBC 的?
DriverManager
?創建數據庫連接。 - 作為數據源供?
JdbcTemplate
?或其他持久層工具使用。
<!--配置連接DriverManagerDataSource --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo"/><property name="username" value="root"/><property name="password" value="2020"/></bean><!-- 配置jdbcTemplate --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean>
4.JBDCTest測試類
public class JBDCTest {ApplicationContext ctx=new ClassPathXmlApplicationContext("SpringJBDC.xml");;JdbcTemplate jdbcTemplate= (JdbcTemplate) ctx.getBean("jdbcTemplate");//關鍵方法://jdbcTemplate.execute(sql):執行任意 SQL 語句,通常用于 DDL 操作//jdbcTemplate.update(sql, params):執行 INSERT/UPDATE/DELETE 語句,返回受影響的行數//jdbcTemplate.query(sql, rowMapper):執行查詢,使用BeanPropertyRowMapper將結果集自動映射為User對象列表@Testpublic void testInsert(){String sql="insert into user(username,address) values('李連杰','上海')";jdbcTemplate.execute(sql);}@Testpublic void testUpdate(){String sql="update user set username='穩杰',address='南海' where id=?";int res=jdbcTemplate.update(sql,2);System.out.println(res);}@Testpublic void testDelete(){String sql="delete from user where id=?";int res=jdbcTemplate.update(sql,18);System.out.println(res);}//查詢列表@Testpublic void testQueryList(){String sql = "select * from user where address like '%京%'";List<User> userList= (List<User>) jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(User.class));System.out.println("查詢List: ");for (User user : userList) {System.out.println(user);}System.out.println("數量: "+userList.size());}
}
?執行流程示例:
- 加載 Spring 配置文件,創建 IoC 容器
- 從容器中獲取
JdbcTemplate
實例 - 調用
JdbcTemplate
的update()
方法執行 INSERT 語句 JdbcTemplate
從DataSource
獲取連接- 創建 Statement 對象,執行 SQL
- 處理返回結果,關閉資源