jdbcTemplate怎么用

這篇文章給大家分享的是有關(guān)jdbcTemplate怎么用的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

十余年專(zhuān)注成都網(wǎng)站制作,企業(yè)網(wǎng)站設(shè)計(jì),個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專(zhuān)注于企業(yè)網(wǎng)站設(shè)計(jì),高端網(wǎng)頁(yè)制作,對(duì)成都門(mén)窗定制等多個(gè)行業(yè),擁有多年建站經(jīng)驗(yàn)。

Spring JDBC抽象框架core包提供了JDBC模板類(lèi),其中JdbcTemplate是core包的核心類(lèi),所以其他模板類(lèi)都是基于它封裝完成的,JDBC模板類(lèi)是第一種工作模式。

JdbcTemplate類(lèi)通過(guò)模板設(shè)計(jì)模式幫助我們消除了冗長(zhǎng)的代碼,只做需要做的事情(即可變部分),并且?guī)臀覀冏瞿男┕潭ú糠?,如連接的創(chuàng)建及關(guān)閉。

在application-mybatis.xml中配置的DataSource注入到JdbcTemplate中,就可以使用JdbcTemplate模板了

配置文件中加入以下內(nèi)容:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">    <property name="driverClassName" value="${jdbc.driverClassName}"/><!--加載驅(qū)動(dòng)-->    <property name="url" value="${jdbc.url}"/><!--數(shù)據(jù)庫(kù)的位置-->    <property name="username" value="${jdbc.username}"/><!--數(shù)據(jù)庫(kù)的用戶(hù)名-->    <property name="password" value="${jdbc.password}"/><!--對(duì)應(yīng)的密碼-->    <property name="maxActive" value="50"/><!--連接池的最大活動(dòng)數(shù)-->    <property name="minIdle" value="5"/><!--最少保持5條空閑連接-->    <property name="maxWait" value="5000"/><!--等待時(shí)間5秒--></bean>

java文件:

@Autowired  @Qualifier("dataSource")  public DataSource dataSource;  public JdbcTemplate getJdbcTemplate(){    JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSource);    return jdbcTemplate;  }

此時(shí)jdbcTemplate變量中便會(huì)有相關(guān)的數(shù)據(jù)庫(kù)的基本參數(shù)配置信息,

jdbcTemplate類(lèi)型中有如下方法

JdbcTemplate主要提供以下五類(lèi)方法:

execute方法:可以用于執(zhí)行任何SQL語(yǔ)句,一般用于執(zhí)行DDL語(yǔ)句;

update方法及batchUpdate方法:update方法用于執(zhí)行新增、修改、刪除等語(yǔ)句;batchUpdate方法用于執(zhí)行批處理相關(guān)語(yǔ)句;

query方法及queryForXXX方法:用于執(zhí)行查詢(xún)相關(guān)語(yǔ)句;

//1.查詢(xún)一行數(shù)據(jù)并返回int型結(jié)果 jdbcTemplate.queryForInt("select count(*) from test"); //2. 查詢(xún)一行數(shù)據(jù)并將該行數(shù)據(jù)轉(zhuǎn)換為Map返回 jdbcTemplate.queryForMap("select * from test where name='name5'"); //3.查詢(xún)一行任何類(lèi)型的數(shù)據(jù),最后一個(gè)參數(shù)指定返回結(jié)果類(lèi)型 jdbcTemplate.queryForObject("select count(*) from test", Integer.class); //4.查詢(xún)一批數(shù)據(jù),默認(rèn)將每行數(shù)據(jù)轉(zhuǎn)換為Map    jdbcTemplate.queryForList("select * from test"); //5.只查詢(xún)一列數(shù)據(jù)列表,列類(lèi)型是String類(lèi)型,列名字是name jdbcTemplate.queryForList(" select name from test where name=?", new Object[]{"name5"}, String.class); //6.查詢(xún)一批數(shù)據(jù),返回為SqlRowSet,類(lèi)似于ResultSet,但不再綁定到連接上 SqlRowSet rs = jdbcTemplate.queryForRowSet("select * from test");

call方法:用于執(zhí)行存儲(chǔ)過(guò)程、函數(shù)相關(guān)語(yǔ)句。

支持的回調(diào)接口如下:

JdbcTemplate類(lèi)支持的回調(diào)類(lèi):

預(yù)編譯語(yǔ)句及存儲(chǔ)過(guò)程創(chuàng)建回調(diào):用于根據(jù)JdbcTemplate提供的連接創(chuàng)建相應(yīng)的語(yǔ)句;

PreparedStatementCreator:通過(guò)回調(diào)獲取JdbcTemplate提供的Connection,由用戶(hù)使用該Conncetion創(chuàng)建相關(guān)的PreparedStatement;

CallableStatementCreator:通過(guò)回調(diào)獲取JdbcTemplate提供的Connection,由用戶(hù)使用該Conncetion創(chuàng)建相關(guān)的CallableStatement;

預(yù)編譯語(yǔ)句設(shè)值回調(diào):用于給預(yù)編譯語(yǔ)句相應(yīng)參數(shù)設(shè)值;

PreparedStatementSetter:通過(guò)回調(diào)獲取JdbcTemplate提供的PreparedStatement,由用戶(hù)來(lái)對(duì)相應(yīng)的預(yù)編譯語(yǔ)句相應(yīng)參數(shù)設(shè)值;

BatchPreparedStatementSetter:;類(lèi)似于PreparedStatementSetter,但用于批處理,需要指定批處理大小;

自定義功能回調(diào):提供給用戶(hù)一個(gè)擴(kuò)展點(diǎn),用戶(hù)可以在指定類(lèi)型的擴(kuò)展點(diǎn)執(zhí)行任何數(shù)量需要的操作;ConnectionCallback:通過(guò)回調(diào)獲取JdbcTemplate提供的Connection,用戶(hù)可在該Connection執(zhí)行任何數(shù)量的操作;

StatementCallback:通過(guò)回調(diào)獲取JdbcTemplate提供的Statement,用戶(hù)可以在該Statement執(zhí)行任何數(shù)量的操作;

PreparedStatementCallback:通過(guò)回調(diào)獲取JdbcTemplate提供的PreparedStatement,用戶(hù)可以在該P(yáng)reparedStatement執(zhí)行任何數(shù)量的操作;

CallableStatementCallback:通過(guò)回調(diào)獲取JdbcTemplate提供的CallableStatement,用戶(hù)可以在該CallableStatement執(zhí)行任何數(shù)量的操作;

結(jié)果集處理回調(diào):通過(guò)回調(diào)處理ResultSet或?qū)esultSet轉(zhuǎn)換為需要的形式;

RowMapper:用于將結(jié)果集每行數(shù)據(jù)轉(zhuǎn)換為需要的類(lèi)型,用戶(hù)需實(shí)現(xiàn)方法mapRow(ResultSet rs, int rowNum)來(lái)完成將每行數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的類(lèi)型。

RowCallbackHandler:用于處理ResultSet的每一行結(jié)果,用戶(hù)需實(shí)現(xiàn)方法processRow(ResultSet rs)來(lái)完成處理,在該回調(diào)方法中無(wú)需執(zhí)行rs.next(),該操作由JdbcTemplate來(lái)執(zhí)行,用戶(hù)只需按行獲取數(shù)據(jù)然后處理即可。

ResultSetExtractor:用于結(jié)果集數(shù)據(jù)提取,用戶(hù)需實(shí)現(xiàn)方法extractData(ResultSet rs)來(lái)處理結(jié)果集,用戶(hù)必須處理整個(gè)結(jié)果集;

JdbcTemplate執(zhí)行流程:首先定義SQL,其次調(diào)用JdbcTemplate方法執(zhí)行SQL,最后通過(guò)RowCallbackHandler回調(diào)處理ResultSet結(jié)果集。

Spring JDBC解決方法相比傳統(tǒng)JDBC編程方式簡(jiǎn)單多了,只有可變部分需要我們來(lái)做,其他的都由Spring JDBC框架來(lái)實(shí)現(xiàn)了。

感謝各位的閱讀!關(guān)于“jdbcTemplate怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

當(dāng)前名稱(chēng):jdbcTemplate怎么用
文章鏈接:http://muchs.cn/article20/ihipjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序網(wǎng)頁(yè)設(shè)計(jì)公司、搜索引擎優(yōu)化、網(wǎng)站制作、電子商務(wù)、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)