這篇文章將為大家詳細(xì)講解有關(guān)Spring JDBC的模板是怎么樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比大祥網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式大祥網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋大祥地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
Spring所提供的JDBC抽象框架由四個(gè)不同的包組成:
◆核心包包含JdbcTemplate。這個(gè)類是一個(gè)基礎(chǔ)類之一-由Spring框架的JDBC支持提供并使用。
◆數(shù)據(jù)源包是實(shí)現(xiàn)單元測(cè)試數(shù)據(jù)庫(kù)存取代碼的重要的一部分。它的DriverManagerDataSource能夠以一種類似于你已經(jīng)習(xí)慣于JDBC中的用法:只要?jiǎng)?chuàng)建一個(gè)新的DriverManagerDataSource并且調(diào)用setter方法來設(shè)置DriverClassName,Url,Username和Password。
◆對(duì)象包中包含類,用于描述RDBMS查詢、更改和存儲(chǔ)過程為線程安全的、可重用的對(duì)象。
◆支持包-你可以從這里找到SQLException翻譯功能和一些工具類。
1)Spring JDBC模板設(shè)計(jì)模式
Spring JDBC實(shí)現(xiàn)模板設(shè)計(jì)模式,這意味著,代碼中的重復(fù)的復(fù)雜的任務(wù)部分是在模板類中實(shí)現(xiàn)的。這種方式簡(jiǎn)化了JDBC的使用,因?yàn)橛伤鼇硖幚碣Y源的創(chuàng)建和釋放。這有助于避免普通錯(cuò)誤,例如忘記關(guān)閉連接等。它執(zhí)行核心JDBC工作流任務(wù),如語(yǔ)句創(chuàng)建和執(zhí)行,而讓應(yīng)用程序代碼來提供SQL并且提取結(jié)果。
2)Spring JDBC異常處理
Spring框架特別強(qiáng)調(diào)在傳統(tǒng)型JDBC編程中所面臨的與下列方案有關(guān)的問題:
◆Spring提供一個(gè)抽象異常層,把冗長(zhǎng)并且易出錯(cuò)誤的異常處理從應(yīng)用程序代碼移到由框架來實(shí)現(xiàn)??蚣茇?fù)責(zé)所有的異常處理;應(yīng)用程序代碼則能夠?qū)W⒂谑褂眠m當(dāng)?shù)腟QL提取結(jié)果。
◆Spring提供了一個(gè)重要的異常類層次,以便于你的應(yīng)用程序代碼中可以使用恰當(dāng)?shù)腟QLException子類。
借助于一個(gè)抽象異常層,我們成功地實(shí)現(xiàn)了數(shù)據(jù)庫(kù)獨(dú)立性而不必改變異常處理。例如,如果你把你的數(shù)據(jù)庫(kù)從PostgreSQL改變?yōu)镺racle,那么你不必把異常處理從OracleDataException改變到PostgresDataException。Spring能夠捕獲應(yīng)用程序服務(wù)器特定的異常并拋出一個(gè)Spring數(shù)據(jù)異常。
當(dāng)處理異常時(shí),Spring檢查來自一個(gè)數(shù)據(jù)庫(kù)連接的元數(shù)據(jù)可用性以決定數(shù)據(jù)庫(kù)產(chǎn)品。它使用這種知識(shí)來把SQLException映射到其自己異常層次中的具體的異常上。因此,我們不需要擔(dān)心專門性的SQL狀態(tài)或錯(cuò)誤代碼問題;Spring的數(shù)據(jù)存取異常不是JDBC特定的,因此你的DAO不必綁定到JDBC(由于其可能拋出的異常)。
四.Spring JDBC模板示例
在下面兩個(gè)列表中,我們將使用前面用傳統(tǒng)型JDBC實(shí)現(xiàn)的業(yè)務(wù)邏輯為例并且展示使用Spring JDBC版本是多么容易。首先,我們從一個(gè)簡(jiǎn)單的接口開始。
接口:
importjava.util.List; publicinterfaceTasksDAO{ publicListgetTasksNames(); }
接口實(shí)現(xiàn)類:
importjava.sql.ResultSet; importjava.sql.SQLException; importjava.util.Iterator; importjava.util.List; importjavax.sql.DataSource; importorg.springframework.context.ApplicationContext; importorg.springframework.context.support.ClassPathXmlApplicationContext; importorg.springframework.jdbc.core.JdbcTemplate; importorg.springframework.jdbc.core.RowMapper; importorg.springframework.jdbc.core.support.JdbcDaoSupport; /** *wangzyspringjdbcTemplate *@authorAdministrator * */ publicclassTasksJdbcDAOextendsJdbcDaoSupportimplementsTasksDAO { publicListgetTasksNames(){ JdbcTemplatejt=getJdbcTemplate();//獲取Spring JDBC模板 returnjt.query("selectUSERNAME,PASSWORDfromuserinfo",newTasksRowMapper()); } //繼承了sping,封裝好的接口RowMapper classTasksRowMapperimplementsRowMapper{ publicObjectmapRow(ResultSetrs,intindex)throwsSQLException{ returnrs.getString(1);}//獲取列數(shù) } publicstaticvoidmain(String[]args)throwsException{ ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext.xml");//獲取sping配置文件地址 DataSourceds=(DataSource)ctx.getBean("dataSourceDBDirect");//獲取數(shù)據(jù)源 TasksJdbcDAOtaskDao=newTasksJdbcDAO(); taskDao.setDataSource(ds); IteratortskIter=taskDao.getTasksNames().iterator();//提取數(shù)據(jù),循環(huán)遍歷 while(tskIter.hasNext()){ System.out.println(tskIter.next().toString()); } } }
appliactiong:(src下)
<beanidbeanid="dataSourceDBDirect"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <propertynamepropertyname="driverClassName"value="com.MySQL.jdbc.Driver">property> <propertynamepropertyname="url"value="jdbc:mysql://localhost:3306/userinfo">property> <propertynamepropertyname="username"value="root">property> <propertynamepropertyname="password"value="root">property> bean>
關(guān)于Spring JDBC的模板是怎么樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
當(dāng)前名稱:SpringJDBC的模板是怎么樣的
URL標(biāo)題:http://jinyejixie.com/article40/gpggho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、企業(yè)建站、品牌網(wǎng)站制作、定制開發(fā)、網(wǎng)站營(yíng)銷、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)