最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jdbcTemplate使用方法實(shí)例解析

 更新時(shí)間:2020年02月12日 10:23:33   作者:小白coder  
這篇文章主要介紹了jdbcTemplate使用方法實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了jdbcTemplate使用方法實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

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

JdbcTemplate類通過模板設(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ù)庫的位置-->
    <property name="username" value="${jdbc.username}"/><!--數(shù)據(jù)庫的用戶名-->
    <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ù)庫的基本參數(shù)配置信息,

jdbcTemplate類型中有如下方法

JdbcTemplate主要提供以下五類方法:

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

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

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

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

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

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

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

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

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

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

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

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

BatchPreparedStatementSetter:;類似于PreparedStatementSetter,但用于批處理,需要指定批處理大??;

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

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

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

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

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

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

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

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis注解實(shí)現(xiàn)動(dòng)態(tài)SQL問題

    MyBatis注解實(shí)現(xiàn)動(dòng)態(tài)SQL問題

    這篇文章主要介紹了MyBatis注解實(shí)現(xiàn)動(dòng)態(tài)SQL問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Vue3實(shí)現(xiàn)多頁面跳轉(zhuǎn)效果的幾種方式

    Vue3實(shí)現(xiàn)多頁面跳轉(zhuǎn)效果的幾種方式

    Vue.js是一個(gè)用于構(gòu)建用戶界面的漸進(jìn)式 JavaScript 框架,它提供了多種方法來實(shí)現(xiàn)頁面之間的導(dǎo)航,在 Vue 3 中,頁面跳轉(zhuǎn)主要通過 Vue Router 來管理,同時(shí)也支持其他方式如編程式導(dǎo)航和使用錨點(diǎn)鏈接,本文將詳細(xì)介紹 Vue 3 中的各種頁面跳轉(zhuǎn)方式,需要的朋友可以參考下
    2025-03-03
  • 詳解Spring依賴注入的三種方式以及優(yōu)缺點(diǎn)

    詳解Spring依賴注入的三種方式以及優(yōu)缺點(diǎn)

    IoC?和?DI?是?Spring?中最重要的兩個(gè)概念,其中?IoC(Inversion?of?Control)為控制反轉(zhuǎn)的思想,而?DI(Dependency?Injection)依賴注入為其(IoC)具體實(shí)現(xiàn)。那么?DI?實(shí)現(xiàn)依賴注入的方式有幾種?這些注入方式又有什么不同?本文就來和大家一起詳細(xì)聊聊
    2022-08-08
  • 詳解5種Java中常見限流算法

    詳解5種Java中常見限流算法

    在高并發(fā)系統(tǒng)中,出于系統(tǒng)保護(hù)角度考慮,通常會(huì)對(duì)流量進(jìn)行限流;不但在工作中要頻繁使用,而且也是面試中的高頻考點(diǎn)。本文就為大家整理了5種Java中常見限流算法,需要的可以參考一下
    2023-04-04
  • Java并發(fā)中線程封閉知識(shí)點(diǎn)詳解

    Java并發(fā)中線程封閉知識(shí)點(diǎn)詳解

    在本篇文章里我們給大家整理了關(guān)于Java并發(fā)中線程封閉的知識(shí)點(diǎn)總結(jié)內(nèi)容,需要的朋友們學(xué)習(xí)參考下。
    2019-07-07
  • 關(guān)于Springboot2.x集成lettuce連接redis集群報(bào)超時(shí)異常Command timed out after 6 second(s)

    關(guān)于Springboot2.x集成lettuce連接redis集群報(bào)超時(shí)異常Command timed out afte

    這篇文章主要介紹了Springboot2.x集成lettuce連接redis集群報(bào)超時(shí)異常Command timed out after 6 second(s),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-03-03
  • 關(guān)于String.format()格式化輸出方式

    關(guān)于String.format()格式化輸出方式

    String.format()是Java的格式化輸出方法,支持多種數(shù)據(jù)類型和格式化選項(xiàng),它在格式化和拼接字符串時(shí)具有較高的靈活性,但效率相對(duì)較低,特別是在處理大量數(shù)據(jù)時(shí),在實(shí)際編程中,應(yīng)根據(jù)具體需求選擇合適的字符串拼接方式
    2024-12-12
  • java設(shè)計(jì)模式筆記之代理模式

    java設(shè)計(jì)模式筆記之代理模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之代理模式筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • java 直接調(diào)用python腳本,并傳遞參數(shù)代碼實(shí)例

    java 直接調(diào)用python腳本,并傳遞參數(shù)代碼實(shí)例

    這篇文章主要介紹了java調(diào)用python腳本傳遞參數(shù)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • java實(shí)現(xiàn)多圖片上傳功能

    java實(shí)現(xiàn)多圖片上傳功能

    這篇文章主要為大家詳細(xì)介紹了java多圖片同步上傳功能的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評(píng)論

贡山| 和龙市| 崇明县| 积石山| 广西| 凤城市| 津南区| 台中县| 禹城市| 西华县| 绥棱县| 乌兰浩特市| 兰考县| 东阳市| 溧水县| 台南县| 湖南省| 鄂托克前旗| 获嘉县| 镇赉县| 荥经县| 怀集县| 通州市| 南木林县| 清镇市| 嘉祥县| 芮城县| 田东县| 沂南县| 呈贡县| 正阳县| 杭锦后旗| 毕节市| 南开区| 连江县| 丹东市| 宁津县| 凯里市| 贺兰县| 江西省| 临洮县|