日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

spring: 使用Spring提供的JDBC模板(使用profiles选择数据源/使用基于JDBC驱动的数据源)...

發布時間:2025/5/22 javascript 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring: 使用Spring提供的JDBC模板(使用profiles选择数据源/使用基于JDBC驱动的数据源)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring提供的JDBC框架負責管理資源和異常處理,從而可以簡化開發者的JDBC代碼。開發者只需要編寫寫入和讀取數據庫相關的代碼即可。

正如在之前的小節中論述過的,Spring將數據庫訪問過程中的模板樣式代碼封裝到各個模板類中了,對于JDBC,Spring提供了下列三個模板類:

  • JdbcTemplate——最基本的JDBC模板,這個類提供了簡單的接口,通過JDBC和索引參數訪問數據庫;
  • NameParameterJdbcTemplate——這個JDBC模板類是的開發者可以執行綁定了指定參數名稱的SQL,而不是索引參數;
  • SimpleJdbcTemplate——這個版本的JDBC模板利用了Java 5的一些特性,例如自動裝箱/拆箱、接口和變參列表等,用于簡化JDBC模板的使用。

從Spring 3.1開始已經將SimpleJdbcTemplate廢棄,它所擁有的Java 5那些特性被添加到原來的JdbcTemplate中了,因此你可以直接使用JdbcTemplate;當你希望在查詢中使用命名參數時,則可以選擇使用NamedParameterJdbcTemplate。

INSERTING DATA USING JDBCTEMPLATE

要使用JdbcTemplate對象,需要為之傳遞DataSource對象。如果使用Java Config配置JdbcTemplatebean,則對應代碼如下:

@Bean public JdbcTemplate jdbcTemplate(DataSource dataSource) {return new JdbcTemplate(dataSource); }

  

這里通過構造函數將DataSource對象注入,而dataSourcebean則來自DataSourceConfiguration文件中定義的javax.sql.DataSource實例。

然后就可以在自己的repository實現中注入jdbcTemplatebean,例如,假設Spitter的repository使用jdbcTemplatebean,代碼可列舉如下:

package org.test.spittr.dao;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcOperations; import org.springframework.stereotype.Repository; import org.test.spittr.data.Spitter;@Repository public class JdbcSpitterRepository implements SpitterRepository {@Autowiredprivate JdbcOperations jdbcOperations;..... }

  

這里JdbcSpitterRepository被@Repository注解修飾,component-scanning掃描機制起作用時會自動創建對應的bean。按照“面向接口編程”的原則,我們定義JdbcOperations接口對應的實例,而JdbcTemplate實現了這個接口,從而使得JdbcSpitterRepository與JdbcTemplate解耦合。

使用JdbcTemplate實現的addSpitter()方法非常簡單,代碼如下:

public void addSpitter(Spitter spitter) {jdbcOperations.update(SQL_INSERT_SPITTER,spitter.getUsername(),spitter.getPassword(),spitter.getFirstName(),spitter.getLastName()); }

  

可以看出,這個版本的addSpitter十分簡單,不強制開發者寫任何管理資源和處理異常的代碼,只有插入語句和對應的參數。

當調用update()方法時,JdbcTemplate獲取一個連接、創建一個statement,并執行插入語句。

JdbcTemplate內部捕獲了可能拋出的SQLException異常,然后轉為更具體的數據庫訪問異常,并重新拋出。由于Spring的數據庫訪問異常都是運行時異常,開發者可以自己決定是否捕獲這些異常。

READING DATA WITH JDBCTEMPLATE

使用JdbcTemplate工具從數據庫中讀取數據也非常簡單,下列代碼展示了改造過后的findOne()函數:調用JdbctTemplate的queryForObject函數,用于通過ID查詢Spitter對象。

public Spitter findOne(long id) {return jdbcOperations.queryForObject(SQL_SELECT_SPITTER,new SpitterRowMapper(),id); }private static final class SpitterRowMapper implements RowMapper<Spitter> {public Spitter mapRow(ResultSet resultSet, int i) throws SQLException {return new Spitter(resultSet.getLong("id"),resultSet.getString("firstName"),resultSet.getString("lastName"),resultSet.getString("username"),resultSet.getString("password"));} }

  

findOne()函數使用JdbcTemplate的queryForObject()方法從數據庫中查詢Spitter記錄。queryForObject()方法包括三個參數:

  • SQL字符串,用于從數據庫中查詢數據;
  • RowMapper對象,用于從結果集ResultSet中提取數據并構造Spitter對象;
  • 變量列表,用于指定查詢參數(這里是通過id查詢)。

這里需要注意SpitterRowMapper類,它實現了RowMapper接口,對于查詢結果,JdbcTemplate調用mapRow()方法——一個ResultSet參數和一個row number參數。mapRow()方法的主要作用是:從結果集中取出對應屬性的值,并構造一個Spitter對象。

和addSpitter()方法相同,findOne()方法也沒有那些JDBC模板樣式代碼,只有純粹的用于查詢Spitter數據的代碼。

?

https://yq.aliyun.com/articles/54079

轉載于:https://www.cnblogs.com/achengmu/p/8301529.html

總結

以上是生活随笔為你收集整理的spring: 使用Spring提供的JDBC模板(使用profiles选择数据源/使用基于JDBC驱动的数据源)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。