1. 程式人生 > 程式設計 >jdbcTemplate使用方法例項解析

jdbcTemplate使用方法例項解析

這篇文章主要介紹了jdbcTemplate使用方法例項解析,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

JdbcTemplate類通過模板設計模式幫助我們消除了冗長的程式碼,只做需要做的事情(即可變部分),並且幫我們做哪些固定部分,如連線的建立及關閉。

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

配置檔案中加入以下內容:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}"/><!--載入驅動-->
    <property name="url" value="${jdbc.url}"/><!--資料庫的位置-->
    <property name="username" value="${jdbc.username}"/><!--資料庫的使用者名稱-->
    <property name="password" value="${jdbc.password}"/><!--對應的密碼-->
    <property name="maxActive" value="50"/><!--連線池的最大活動數-->
    <property name="minIdle" value="5"/><!--最少保持5條空閒連線-->
    <property name="maxWait" value="5000"/><!--等待時間5秒-->
</bean>

java檔案:

@Autowired
  @Qualifier("dataSource")
  public DataSource dataSource;

  public JdbcTemplate getJdbcTemplate(){
    JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSource);
    return jdbcTemplate;
  }

此時jdbcTemplate變數中便會有相關的資料庫的基本引數配置資訊,

jdbcTemplate型別中有如下方法

jdbcTemplate使用方法例項解析

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

execute方法:可以用於執行任何SQL語句,一般用於執行DDL語句;

update方法及batchUpdate方法:update方法用於執行新增、修改、刪除等語句;batchUpdate方法用於執行批處理相關語句;

query方法及queryForXXX方法:用於執行查詢相關語句;

//1.查詢一行資料並返回int型結果 
jdbcTemplate.queryForInt("select count(*) from test"); 
//2. 查詢一行資料並將該行資料轉換為Map返回 
jdbcTemplate.queryForMap("select * from test where name='name5'"); 
//3.查詢一行任何型別的資料,最後一個引數指定返回結果型別 
jdbcTemplate.queryForObject("select count(*) from test",Integer.class); 
//4.查詢一批資料,預設將每行資料轉換為Map    
jdbcTemplate.queryForList("select * from test"); 
//5.只查詢一列資料列表,列型別是String型別,列名字是name 
jdbcTemplate.queryForList(" 
select name from test where name=?",new Object[]{"name5"},String.class); 
//6.查詢一批資料,返回為SqlRowSet,類似於ResultSet,但不再繫結到連線上 
SqlRowSet rs = jdbcTemplate.queryForRowSet("select * from test");

call方法:用於執行儲存過程、函式相關語句。

支援的回撥介面如下:

jdbcTemplate使用方法例項解析

JdbcTemplate類支援的回撥類:

預編譯語句及儲存過程建立回撥:用於根據JdbcTemplate提供的連線建立相應的語句;

PreparedStatementCreator:通過回撥獲取JdbcTemplate提供的Connection,由使用者使用該Conncetion建立相關的PreparedStatement;

CallableStatementCreator:通過回撥獲取JdbcTemplate提供的Connection,由使用者使用該Conncetion建立相關的CallableStatement;

預編譯語句設值回撥:用於給預編譯語句相應引數設值;

PreparedStatementSetter:通過回撥獲取JdbcTemplate提供的PreparedStatement,由使用者來對相應的預編譯語句相應引數設值;

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

自定義功能回撥:提供給使用者一個擴充套件點,使用者可以在指定型別的擴充套件點執行任何數量需要的操作;
ConnectionCallback:通過回撥獲取JdbcTemplate提供的Connection,使用者可在該Connection執行任何數量的操作;

StatementCallback:通過回撥獲取JdbcTemplate提供的Statement,使用者可以在該Statement執行任何數量的操作;

PreparedStatementCallback:通過回撥獲取JdbcTemplate提供的PreparedStatement,使用者可以在該PreparedStatement執行任何數量的操作;

CallableStatementCallback:通過回撥獲取JdbcTemplate提供的CallableStatement,使用者可以在該CallableStatement執行任何數量的操作;

結果集處理回撥:通過回撥處理ResultSet或將ResultSet轉換為需要的形式;

RowMapper:用於將結果集每行資料轉換為需要的型別,使用者需實現方法mapRow(ResultSet rs,int rowNum)來完成將每行資料轉換為相應的型別。

RowCallbackHandler:用於處理ResultSet的每一行結果,使用者需實現方法processRow(ResultSet rs)來完成處理,在該回調方法中無需執行rs.next(),該操作由JdbcTemplate來執行,使用者只需按行獲取資料然後處理即可。

ResultSetExtractor:用於結果集資料提取,使用者需實現方法extractData(ResultSet rs)來處理結果集,使用者必須處理整個結果集;

JdbcTemplate執行流程:首先定義SQL,其次呼叫JdbcTemplate方法執行SQL,最後通過RowCallbackHandler回撥處理ResultSet結果集。

Spring JDBC解決方法相比傳統JDBC程式設計方式簡單多了,只有可變部分需要我們來做,其他的都由Spring JDBC框架來實現了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。