97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

鄭州服裝網(wǎng)站建設(shè)常熟公司網(wǎng)站建設(shè)電話

鶴壁市浩天電氣有限公司 2026/01/24 11:11:39
鄭州服裝網(wǎng)站建設(shè),常熟公司網(wǎng)站建設(shè)電話,一鍵生成簡(jiǎn)歷,網(wǎng)站開發(fā)實(shí)戰(zhàn)答案Spring JDBC 與 JdbcTemplateSpring JDBC 是Spring所提供的持久層技術(shù)#xff0c;用于簡(jiǎn)化數(shù)據(jù)庫(kù)操作的一個(gè)模塊#xff0c;以一種更簡(jiǎn)潔#xff0c;更直接的方式使用 JDBC API 簡(jiǎn)化了開發(fā)人員對(duì)數(shù)據(jù)庫(kù)的操作。JdbcTemplate 則是 Spring JDBC 模塊中最核心的類#xff0c;是…Spring JDBC 與 JdbcTemplateSpring JDBC 是Spring所提供的持久層技術(shù)用于簡(jiǎn)化數(shù)據(jù)庫(kù)操作的一個(gè)模塊以一種更簡(jiǎn)潔更直接的方式使用 JDBC API 簡(jiǎn)化了開發(fā)人員對(duì)數(shù)據(jù)庫(kù)的操作。JdbcTemplate 則是 Spring JDBC 模塊中最核心的類是該模塊的主要實(shí)現(xiàn)者是對(duì)原始繁瑣的 Jdbc API 對(duì)象的簡(jiǎn)單封裝提供了增刪改查CRUD的便捷實(shí)現(xiàn)是開發(fā)者使用 Spring JDBC 時(shí)最常用的工具歸納起來主要有以下幾種類型的方法1execute方法可以用于執(zhí)行任何SQL語句一般用于執(zhí)行DDL語句。2update用于執(zhí)行新增、修改與刪除等語句。3query用于執(zhí)行查詢相關(guān)的語句。下面我們來具體實(shí)現(xiàn) Spring JDBC實(shí)現(xiàn)Spring JDBC數(shù)據(jù)庫(kù)內(nèi)容如下pom.xml 添加相關(guān)依賴dependencies !-- 統(tǒng)一Spring版本為5.3.21 -- dependency groupIdorg.springframework/groupId artifactIdspring-context/artifactId version5.3.21/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-test/artifactId version5.3.21/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-jdbc/artifactId version5.3.21/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-aspects/artifactId version5.3.21/version /dependency !-- 其他依賴保持不變 -- dependency groupIdjunit/groupId artifactIdjunit/artifactId version4.12/version scopetest/scope /dependency !-- mysql驅(qū)動(dòng)包 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version5.1.6/version /dependency !-- AOP聯(lián)盟 -- dependency groupIdaopalliance/groupId artifactIdaopalliance/artifactId version1.0/version /dependency !-- aspectj -- dependency groupIdorg.aspectj/groupId artifactIdaspectjweaver/artifactId version1.8.3/version /dependency /dependenciesgroupIdorg.springframework 為Spring 官方組織標(biāo)識(shí)spring-contextSpring 核心容器spring-testSpring 測(cè)試支持spring-jdbcSpring JDBC 支持spring-aspectsSpring AOP 切面支持mysql-connector-javaMySQL 數(shù)據(jù)庫(kù)的 JDBC 驅(qū)動(dòng)使得 Java 程序能夠連接 MySQL 數(shù)據(jù)庫(kù)aopallianceAOP 聯(lián)盟規(guī)范提供 AOP 接口定義Maven 會(huì)根據(jù)這個(gè)配置自動(dòng)下載所需的依賴庫(kù)并按照指定的配置進(jìn)行項(xiàng)目構(gòu)建AlipayDao .javapublic interface AlipayDao { public void transfer(String fromA,String toB,int amount); }AliPayDaoImpl .javapublic class AliPayDaoImpl implements AlipayDao { private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate jdbcTemplate; } Override public void transfer(String fromA, String toB,int amount) { jdbcTemplate.update(update alipay set amountamount-? where aliname?,amount,fromA); jdbcTemplate.update(update alipay set amountamount? where aliname?,amount,toB); } }定義了數(shù)據(jù)訪問層實(shí)現(xiàn)類 AliPayDaoImpl主要功能是實(shí)現(xiàn)賬戶間的轉(zhuǎn)賬操作 transfer()。JdbcTemplate 是 Spring JDBC 的核心工具類類中定義了 JdbcTemplate 對(duì)象并提供了 get/set 方法這是為了通過 Spring 的依賴注入獲取 JdbcTemplate 實(shí)例。這種通過 setter 方法注入的方式使得 JdbcTemplate 可以由 Spring 容器統(tǒng)一管理無需手動(dòng)創(chuàng)建。!--配置連接DriverManagerDataSource -- bean iddataSource classorg.springframework.jdbc.datasource.DriverManagerDataSource property namedriverClassName valuecom.mysql.jdbc.Driver/ property nameurl valuejdbc:mysql://localhost:3306/mybatis_demo/ property nameusername valueroot/ property namepassword valueroot/ /bean !-- 配置jdbcTemplate -- bean idjdbcTemplate classorg.springframework.jdbc.core.JdbcTemplate property namedataSource refdataSource/ /bean bean idAliPayDaoImpl classcom.qcby.dao.impl.AliPayDaoImpl property namejdbcTemplate refjdbcTemplate/ /bean /beans這段配置和代碼的邏輯是Spring容器先創(chuàng)建數(shù)據(jù)源dataSource指定數(shù)據(jù)庫(kù)連接的驅(qū)動(dòng)、地址、用戶名和密碼再創(chuàng)建JdbcTemplate實(shí)例并關(guān)聯(lián)該數(shù)據(jù)源Spring 通過 ref 把 dataSource 注入給了 jdbcTemplateSpring調(diào)用JdbcTemplate類中的setDataSource方法實(shí)現(xiàn)依賴注入使其獲得數(shù)據(jù)庫(kù)連接能力以操作數(shù)據(jù)庫(kù)最后創(chuàng)建AliPayDaoImpl實(shí)例把 JdbcTemplate 的屬性和 setter 方法定義在 AliPayDaoImpl 內(nèi)部通過調(diào)用AliPayDaoImpl類中的setJdbcTemplate方法將前面創(chuàng)建的JdbcTemplate注入進(jìn)去這樣AliPayDaoImpl就可以利用 JdbcTemplate來執(zhí)行數(shù)據(jù)庫(kù)操作當(dāng)執(zhí)行transfer方法時(shí)就能利用注入的JdbcTemplate執(zhí)行兩條更新SQL完成從一個(gè)賬戶扣款、向另一個(gè)賬戶加款的轉(zhuǎn)賬操作整個(gè)過程通過Spring的依賴注入實(shí)現(xiàn)了各組件的解耦和自動(dòng)組裝。public class AliPayTest { org.junit.Test public void run(){ ApplicationContext context new ClassPathXmlApplicationContext(Spring.xml); AlipayDao alipayDao (AlipayDao) context.getBean(AliPayDaoImpl);//使用多態(tài) alipayDao.transfer(張三,李四,100); } }實(shí)現(xiàn)效果如圖此時(shí)數(shù)據(jù)庫(kù)數(shù)據(jù)變?yōu)榇藭r(shí)我們將數(shù)據(jù)庫(kù)的數(shù)據(jù)重置為各是100再將AliPayDaoImpl.java改為這樣AliPayDaoImpl.java是有報(bào)錯(cuò)的我們來看實(shí)現(xiàn)效果此時(shí)數(shù)據(jù)庫(kù)內(nèi)容變?yōu)榧磮?zhí)行了轉(zhuǎn)出而未實(shí)現(xiàn)轉(zhuǎn)入與實(shí)際情形不符合理的解決方式——添加事務(wù)添加事務(wù)xml配置的形式Spring.xml!-- 定義事務(wù)管理器-- bean idtxManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager property namedataSource refdataSource/ /bean !-- 編寫事務(wù)通知-- tx:advice idtxAdvice transaction-managertxManager tx:attributes tx:method name* propagationREQUIRED isolationDEFAULT read-onlyfalse/ /tx:attributes /tx:advice !-- 編寫AOP讓spring自動(dòng)將事務(wù)切入到目標(biāo)切點(diǎn)-- aop:config !-- 定義切入點(diǎn)-- aop:pointcut idtxPointCut expressionexecution(* com.qcby.dao.impl.AliPayDaoImpl.transfer(..))/ !-- 將事務(wù)通知與切入點(diǎn)結(jié)合-- aop:advisor advice-reftxAdvice pointcut-reftxPointCut/ /aop:config這段XML配置是Spring框架中實(shí)現(xiàn)聲明式事務(wù)管理的完整配置其核心作用是為com.qcby.dao.impl.AliPayDaoImpl類中的transfer方法自動(dòng)添加事務(wù)控制能力。首先通過標(biāo)簽定義了一個(gè)名為txManager的事務(wù)管理器其類型為DataSourceTransactionManager專門用于管理JDBC數(shù)據(jù)源的事務(wù)并通過property標(biāo)簽將其與已配置的dataSource數(shù)據(jù)源關(guān)聯(lián)起來使事務(wù)管理器能夠操作數(shù)據(jù)庫(kù)連接。接著使用定義了名為txAdvice的事務(wù)通知該通知關(guān)聯(lián)了前面定義的txManager事務(wù)管理器并在中通過設(shè)置了事務(wù)屬性name*表示對(duì)匹配的方法都應(yīng)用該規(guī)則propagationREQUIRED指定了事務(wù)傳播行為為如果當(dāng)前沒有事務(wù)則新建一個(gè)若已有事務(wù)則加入其中isolationDEFAULT表示使用數(shù)據(jù)庫(kù)默認(rèn)的事務(wù)隔離級(jí)別read-onlyfalse說明這不是只讀事務(wù)。最后通過進(jìn)行AOP配置先定義了一個(gè)名為txPointCut的切入點(diǎn)其表達(dá)式execution(* com.qcby.dao.impl.AliPayDaoImpl.transfer(..))精確匹配AliPayDaoImpl類中的transfer方法再通過將txAdvice事務(wù)通知與txPointCut切入點(diǎn)關(guān)聯(lián)起來。這樣當(dāng)transfer方法被調(diào)用時(shí)Spring會(huì)通過AOP自動(dòng)在方法執(zhí)行前開啟事務(wù)若方法正常執(zhí)行完畢則自動(dòng)提交事務(wù)若出現(xiàn)未捕獲的異常則自動(dòng)回滾事務(wù)從而確保轉(zhuǎn)賬操作的原子性避免出現(xiàn)數(shù)據(jù)不一致的情況同時(shí)這種配置方式將事務(wù)控制邏輯與業(yè)務(wù)代碼分離降低了耦合度提高了代碼的可維護(hù)性。實(shí)現(xiàn)效果注解的形式Spring.xml!-- 定義事務(wù)管理器 -- bean idtxManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager property namedataSource refdataSource/ /bean !-- 開啟事務(wù)注解驅(qū)動(dòng) -- tx:annotation-driven transaction-managertxManager/其中transaction-managertxManager 指定了該注解驅(qū)動(dòng)要使用的事務(wù)管理器是名為 txManager 的 Bean這樣注解式事務(wù)就能基于該事務(wù)管理器實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)事務(wù)的控制。啟用該配置后開發(fā)者只需在需要事務(wù)支持的類或方法上添加 Transactional 注解Spring 就會(huì)自動(dòng)為這些方法添加事務(wù)功能。AliPayDaoImpl.java其中的重要部分Transactional(propagation Propagation.REQUIRED,isolation Isolation.DEFAULT,readOnly false)propagation 是Spring事務(wù)的傳播行為它定義了事務(wù)方法被另一個(gè)事務(wù)方法調(diào)用時(shí)的事務(wù)行為。propagation的值有REQUIRED默認(rèn)如果當(dāng)前存在事務(wù)則在該事務(wù)中運(yùn)行如果沒有事務(wù)則創(chuàng)建一個(gè)新的事務(wù)SUPPORTS如果當(dāng)前存在事務(wù)則在該事務(wù)中運(yùn)行如果沒有事務(wù)則在非事務(wù)環(huán)境中運(yùn)行MANDATORY必須在事務(wù)中運(yùn)行如果沒有事務(wù)則拋出異常isolation 是Spring事務(wù)的隔離級(jí)別隔離級(jí)別定義了一個(gè)事務(wù)對(duì)另一個(gè)正在進(jìn)行的事務(wù)所可見的程度隔離級(jí)別越高數(shù)據(jù)庫(kù)的并發(fā)性越差但安全性就越高。Spring支持的事務(wù)隔離級(jí)別包括DEFAULT使用數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別不可重復(fù)讀READ_UNCOMMITTED允許臟讀、不可重復(fù)讀和幻讀READ_COMMITTED避免了臟讀但允許不可重復(fù)讀和幻讀REPEATABLE_READ避免了臟讀和不可重復(fù)讀但允許幻讀SERIALIZABLE最高的隔離級(jí)別避免了所有可能的數(shù)據(jù)不一致問題但性能最差。
版權(quán)聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系我們進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

皮帶哥 長(zhǎng)沙鄭州seo優(yōu)化

皮帶哥 長(zhǎng)沙,鄭州seo優(yōu)化,推動(dòng)高質(zhì)量發(fā)展要堅(jiān)持,做網(wǎng)站是不是很麻煩當(dāng)AI從一個(gè)遙遠(yuǎn)的技術(shù)熱點(diǎn)#xff0c;演變?yōu)槠髽I(yè)會(huì)議室里無法回避的商業(yè)標(biāo)配#xff0c;我們對(duì)“專家”的定義也必須隨之進(jìn)化。技術(shù)

2026/01/23 02:35:02

自己做網(wǎng)站賺錢珠海網(wǎng)站制作設(shè)計(jì)

自己做網(wǎng)站賺錢,珠海網(wǎng)站制作設(shè)計(jì),做網(wǎng)站 插件,岳陽商城網(wǎng)站建設(shè)免費(fèi)開源語音克隆神器OpenVoice#xff1a;3分鐘讓你的AI開口說話 【免費(fèi)下載鏈接】OpenVoice 項(xiàng)目是MyShell

2026/01/21 18:59:01

百度 seo 工具網(wǎng)站怎么優(yōu)化排名

百度 seo 工具,網(wǎng)站怎么優(yōu)化排名,做網(wǎng)站都需要什么東西,wordpress修改注冊(cè)頁(yè)深入探究WCF服務(wù)的測(cè)試與故障排除 1. 查看意外的SOAP錯(cuò)誤 1.1 打開初始解決方案 以管理員身份登

2026/01/23 05:32:01

網(wǎng)站認(rèn)證怎么認(rèn)證h5免費(fèi)制作

網(wǎng)站認(rèn)證怎么認(rèn)證,h5免費(fèi)制作,網(wǎng)絡(luò)營(yíng)銷教學(xué)大綱,學(xué)校網(wǎng)站建設(shè)自檢自查報(bào)告Windows 管道通信機(jī)制深入解析 1. 命名管道的模擬與安全控制 命名管道是 Windows 系統(tǒng)中用于進(jìn)程間通信的重

2026/01/22 21:57:01