關于Spring JBDC

一、什么是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:數據庫連接 URL
    • username/password:數據庫登錄憑證
  • jdbcTemplate:Spring JDBC 的核心類
    • 通過dataSource屬性注入數據源
    • 負責執行 SQL 語句并處理結果

DriverManagerDataSource?是 Spring 框架提供的一個簡單的數據源實現類,位于?org.springframework.jdbc.datasource?包中。它用于創建和管理數據庫連接,是 Spring JDBC 模塊的基礎組件之一。

核心作用

DriverManagerDataSource?的主要功能是:

  1. 封裝數據庫連接信息(URL、用戶名、密碼等)。
  2. 基于 JDBC 的?DriverManager?創建數據庫連接
  3. 作為數據源供?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());}
}

?執行流程示例:

  1. 加載 Spring 配置文件,創建 IoC 容器
  2. 從容器中獲取JdbcTemplate實例
  3. 調用JdbcTemplateupdate()方法執行 INSERT 語句
  4. JdbcTemplateDataSource獲取連接
  5. 創建 Statement 對象,執行 SQL
  6. 處理返回結果,關閉資源

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88036.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88036.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88036.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【SpringBoot】Spring Boot實現SSE實時推送實戰

以下是一個完整的基于 Spring Boot 的 Server-Sent Events (SSE) 示例&#xff0c;包括服務端和客戶端的實現。 一、服務端實現 1. 創建 Spring Boot 項目 首先&#xff0c;創建一個基本的 Spring Boot 項目&#xff0c;并添加 spring-boot-starter-web 依賴。在 pom.xml 中…

若依導出模板時設置動態excel下拉框(表連接的)

若依導出模板時設置動態excel下拉框&#xff08;表連接的&#xff09; 一、問題二、解決1、實體類2.1、臨時使用2.2、統一工具類3、調用 一、問題 若依導出只能&#xff1b;使用dictType、combo、comboReadDict、readConverterExp這些來控制字典的導出下拉&#xff0c;如果不是…

Rabbitmq集成springboot 使用死信隊列

一、何為死信隊列 RabbitMQ的死信隊列&#xff08;Dead Letter Queue&#xff0c;DLQ&#xff09;是一種特殊的隊列機制&#xff0c;用于處理那些無法被正常消費的消息。這些消息可能由于各種原因無法被消費者正確處理&#xff0c;如果不加以處理&#xff0c;可能會導致隊列堵塞…

Spring Boot 項目中 resources 文件讀取

開發必備&#xff01;Spring Boot 項目中 resources 文件讀取的 9 大方案詳解 在 Spring Boot 項目中&#xff0c;resources 目錄承載著大量的關鍵資源&#xff0c;如配置文件、模板文件、腳本資源、數據文件等。而如何以合適的方式高效、安全地讀取這些資源&#xff0c;往往是…

力扣-1143.最長公共子序列

題目描述 給定兩個字符串 text1 和 text2&#xff0c;返回這兩個字符串的最長 公共子序列 的長度。如果不存在 公共子序列 &#xff0c;返回 0 。 一個字符串的 子序列 是指這樣一個新的字符串&#xff1a;它是由原字符串在不改變字符的相對順序的情況下刪除某些字符&#xf…

《算法筆記》之二(筆記)

1. vector&#xff1a; 1.定義&#xff1a;“變長數組”&#xff08;長度依據需要而自動改變&#xff0c;節省空間&#xff0c;避免普通數組超內存&#xff09; 代碼定義&#xff1a;vector < typename > name; 注&#xff1a;&#xff08;注意理解&#xff09; vecto…

PROFIBUS DP 轉 EtherCAT 網關:冶金自動化高效協同的基石

在冶金行業高爐、連鑄、軋鋼等復雜場景中&#xff0c;生產設備往往跨越不同時代。許多關鍵產線仍依賴西門子PLC為核心的PROFIBUS DP網絡&#xff0c;而新型伺服驅動器、機器人手臂則普遍采用高性能EtherCAT接口。如何實現新舊系統的無縫集成&#xff1f;JH-PB-ECT疆鴻智能PROFI…

開發云數據庫

1、云數據庫概述 云數據庫是一款端云協同的數據庫產品&#xff0c;是AGC云開發&#xff08;AGC Serverless&#xff09;關鍵服務之一&#xff0c;為AGC構建了MBaas&#xff08;Mobile Backend as a Service&#xff0c;移動后端即服務&#xff09;能力。云數據庫提供了端云數據…

IEEE使用遇到的問題

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、如何在已知期刊中查找自己方向的論文 前言 IEEE 使用相關問題記錄 一、如何在已知期刊中查找自己方向的論文 比如在IEEE Transactions on Visualization …

深入解析C#數組協變與克隆機制

—— 值類型與引用類型的內存行為差異 &#x1f50d; 一、數組協變&#xff08;Array Covariance&#xff09; 核心條件&#xff1a; 僅適用于引用類型數組被賦值對象與數組基類型需存在隱式/顯式轉換關系 class Animal {} class Dog : Animal {}Animal[] animals new Dog…

零散問題一

1.函數重載的原理 名稱修飾&#xff08;Name Mangling&#xff09; 作用&#xff1a;編譯器在編譯時對函數名進行編碼&#xff0c;生成唯一的內部標識符&#xff0c;使得同名函數能通過參數列表的差異被區分。示例&#xff1a; void func(int a); // 修飾后可能為 _Z4funcivo…

React Native【詳解】內置 API

屏幕 Dimensions 獲取屏幕信息 import { Dimensions } from "react-native"; export default function demo() {const { width, height, scale, fontScale } Dimensions.get("window");console.log(width, height, scale, fontScale); }參數為 window 時…

Selenium自動化測試常見的異常處理

在軟件開發和測試領域,Selenium作為一種廣泛使用的自動化測試工具,扮演著至關重要的角色。隨著自動化測試的不斷普及,如何在測試過程中有效捕獲并處理異常,成為了每個測試工程師必須掌握的技能。本文旨在深入探討Selenium異常處理的方法,通過豐富的案例和代碼,幫助新手朋…

企業級安全實踐:SSL 加密與權限管理(二)

權限管理&#xff1a;企業數據的守護者 權限管理的基本概念與重要性 權限管理&#xff0c;是指根據系統設置的安全規則或策略&#xff0c;用戶可以訪問且僅能訪問自己被授權的資源&#xff0c;不多不少 。它是企業信息安全體系的重要組成部分&#xff0c;旨在確保只有授權的人…

AMAT P5000 CVDFDT CVDMAINT Precision 5000 Mark 操作 電氣原理 PCB圖 電路圖等

AMAT P5000 CVDFDT CVDMAINT Precision 5000 Mark 操作 電氣原理 PCB圖 電路圖等

深入淺出:語言模型中的“自回歸生成”是什么?

在當今大語言模型&#xff08;LLM&#xff09;如 ChatGPT、GPT-4、文心一言、通義千問等風靡的時代&#xff0c;“自回歸生成”是驅動它們流暢對話、創作文本的核心引擎。 理解它是深入掌握LLM工作原理的關鍵一步。本文將用清晰易懂的語言&#xff0c;結合實例&#xff0c;為你…

LLMs基礎學習(八)強化學習專題(5)

LLMs基礎學習&#xff08;八&#xff09;強化學習專題&#xff08;5&#xff09; 文章目錄 LLMs基礎學習&#xff08;八&#xff09;強化學習專題&#xff08;5&#xff09;重要性采樣&#xff08;Importance Sampling&#xff09;權重計算邏輯兩種實現形式使用注意事項 PPO 與…

深入理解“回調地獄“(Callback Hell)

"回調地獄"是異步編程中常見的問題&#xff0c;指由于過多嵌套的回調函數導致的代碼難以理解和維護的情況。 一、什么是回調地獄 基本概念 回調地獄(Callback Hell/Pyramid of Doom)是指&#xff1a; 多層嵌套的回調函數形成的代碼結構 代碼向右縮進越來越深&…

Oracle 的 TCP.SEND_TIMEOUT 參數

Oracle 的 TCP.SEND_TIMEOUT 參數 一 參數基本概念 TCP.SEND_TIMEOUT 是 Oracle Net Services 中的一個重要參數&#xff0c;用于控制 TCP 數據發送操作的最長等待時間。 二 關鍵特性 特性說明參數類型sqlnet.ora 配置文件參數默認值none (無超時限制)單位ms, sec, min, 默…

[Nginx] 配置中的sendfile參數詳解:從傳統 IO 到零拷貝的性能優化

一、sendfile 是什么&#xff1f; sendfile 是 Nginx 中一個關鍵的配置參數&#xff0c;用于控制是否使用操作系統提供的 sendfile() 系統調用來傳輸文件。 sendfile on;&#xff1a;啟用零拷貝技術&#xff0c;直接由內核將文件發送到網絡。sendfile off;&#xff1a;使用傳統…