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

Spring?JDBC?框架簡(jiǎn)介

 更新時(shí)間:2021年12月30日 15:08:58   作者:???念卿???  
Spring?JDBC?提供幾種方法和數(shù)據(jù)庫(kù)中相應(yīng)的不同的類與接口。我將給出使用JdbcTemplate類框架的經(jīng)典和最受歡迎的方法。本文給大家介紹Spring?JDBC?框架的相關(guān)知識(shí),感興趣的朋友一起看看吧

JDBC 框架概述

在使用普通的 JDBC 數(shù)據(jù)庫(kù)時(shí),就會(huì)很麻煩的寫不必要的代碼來處理異常,打開和關(guān)閉數(shù)據(jù)庫(kù)連接等。但 Spring JDBC 框架負(fù)責(zé)所有的低層細(xì)節(jié),從開始打開連接,準(zhǔn)備和執(zhí)行 SQL 語句,處理異常,處理事務(wù),到最后關(guān)閉連接。

所以當(dāng)從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)時(shí),你所做的是定義連接參數(shù),指定要執(zhí)行的 SQL 語句,每次迭代完成所需的工作。

Spring JDBC 提供幾種方法和數(shù)據(jù)庫(kù)中相應(yīng)的不同的類與接口。我將給出使用JdbcTemplate類框架的經(jīng)典和最受歡迎的方法。這是管理所有數(shù)據(jù)庫(kù)通信和異常處理的中央框架類。

JdbcTemplate 類

JdbcTemplate 類執(zhí)行 SQL 查詢、更新語句和存儲(chǔ)過程調(diào)用,執(zhí)行迭代結(jié)果集和提取返回參數(shù)值。它也捕獲 JDBC 異常并轉(zhuǎn)換它們到 org.springframework.dao 包中定義的通用類、更多的信息、異常層次結(jié)構(gòu)。

JdbcTemplate類的實(shí)例是線程安全配置的。所以你可以配置 JdbcTemplate 的單個(gè)實(shí)例,然后將這個(gè)共享的引用安全地注入到多個(gè) DAOs 中。

使用 JdbcTemplate 類時(shí)常見的做法是在你的 Spring 配置文件中配置數(shù)據(jù)源,然后共享數(shù)據(jù)源 bean 依賴注入到 DAO 類中,并在數(shù)據(jù)源的設(shè)值函數(shù)中創(chuàng)建了 JdbcTemplate。

配置數(shù)據(jù)源

我們?cè)跀?shù)據(jù)庫(kù)TEST中創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)表Student。假設(shè)你正在使用 MySQL 數(shù)據(jù)庫(kù),如果你使用其他數(shù)據(jù)庫(kù),那么你可以改變你的 DDL 和相應(yīng)的 SQL 查詢。

CREATE TABLE Student(
   ID   INT NOT NULL AUTO_INCREMENT,
   NAME VARCHAR(20) NOT NULL,
   AGE  INT NOT NULL,
   PRIMARY KEY (ID)
);

現(xiàn)在,我們需要提供一個(gè)數(shù)據(jù)源到 JdbcTemplate 中,所以它可以配置本身來獲得數(shù)據(jù)庫(kù)訪問。你可以在 XML 文件中配置數(shù)據(jù)源,其中一段代碼如下所示:

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
   <property name="url" value="jdbc:mysql://localhost:3306/TEST"/>
   <property name="username" value="root"/>
   <property name="password" value="password"/>
</bean>

數(shù)據(jù)訪問對(duì)象(DAO)

DAO 代表常用的數(shù)據(jù)庫(kù)交互的數(shù)據(jù)訪問對(duì)象。DAOs 提供一種方法來讀取數(shù)據(jù)并將數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)中,它們應(yīng)該通過一個(gè)接口顯示此功能,應(yīng)用程序的其余部分將訪問它們。

在 Spring 中,數(shù)據(jù)訪問對(duì)象(DAO)支持很容易用統(tǒng)一的方法使用數(shù)據(jù)訪問技術(shù),如 JDBC、Hibernate、JPA 或者 JDO。

執(zhí)行 SQL 語句

我們看看如何使用 SQL 和 jdbcTemplate 對(duì)象在數(shù)據(jù)庫(kù)表中執(zhí)行 CRUD(創(chuàng)建、讀取、更新和刪除)操作。

查詢一個(gè)整數(shù)類型:

String SQL = "select count(*) from Student";
int rowCount = jdbcTemplateObject.queryForInt( SQL );

查詢一個(gè) long 類型:

String SQL = "select count(*) from Student";
long rowCount = jdbcTemplateObject.queryForLong( SQL );

一個(gè)使用綁定變量的簡(jiǎn)單查詢:

String SQL = "select age from Student where id = ?";
int age = jdbcTemplateObject.queryForInt(SQL, new Object[]{10});

查詢字符串:

String SQL = "select name from Student where id = ?";
String name = jdbcTemplateObject.queryForObject(SQL, new Object[]{10}, String.class);

查詢并返回一個(gè)對(duì)象:

String SQL = "select * from Student where id = ?";
Student student = jdbcTemplateObject.queryForObject(SQL, 
                  new Object[]{10}, new StudentMapper());
public class StudentMapper implements RowMapper<Student> {
   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
      Student student = new Student();
      student.setID(rs.getInt("id"));
      student.setName(rs.getString("name"));
      student.setAge(rs.getInt("age"));
      return student;
   }
}

查詢并返回多個(gè)對(duì)象:

String SQL = "select * from Student";
List<Student> students = jdbcTemplateObject.query(SQL,
                         new StudentMapper());
public class StudentMapper implements RowMapper<Student> {
   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
      Student student = new Student();
      student.setID(rs.getInt("id"));
      student.setName(rs.getString("name"));
      student.setAge(rs.getInt("age"));
      return student;
   }
}

在表中插入一行:

String SQL = "insert into Student (name, age) values (?, ?)";
jdbcTemplateObject.update( SQL, new Object[]{"Zara", 11} );

更新表中的一行:

String SQL = "update Student set name = ? where id = ?";
jdbcTemplateObject.update( SQL, new Object[]{"Zara", 10} );

從表中刪除一行:

String SQL = "delete Student where id = ?";
jdbcTemplateObject.update( SQL, new Object[]{20} );

執(zhí)行 DDL 語句

你可以使用jdbcTemplate中的execute(..)方法來執(zhí)行任何 SQL 語句或 DDL 語句。下面是一個(gè)使用 CREATE 語句創(chuàng)建一個(gè)表的示例:

String SQL = "CREATE TABLE Student( " +
   "ID   INT NOT NULL AUTO_INCREMENT, " +
   "NAME VARCHAR(20) NOT NULL, " +
   "AGE  INT NOT NULL, " +
   "PRIMARY KEY (ID));"
jdbcTemplateObject.execute( SQL );

Spring JDBC 框架例子

基于上述概念,讓我們看看一些重要的例子來幫助你理解在 Spring 中使用 JDBC 框架:

到此這篇關(guān)于Spring JDBC 框架的文章就介紹到這了,更多相關(guān)Spring JDBC 框架內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IDEA使用GsonFormat完成JSON和JavaBean之間的轉(zhuǎn)換

    IDEA使用GsonFormat完成JSON和JavaBean之間的轉(zhuǎn)換

    這篇文章主要介紹了IDEA使用GsonFormat完成JSON和JavaBean之間的轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 詳解Java中Hibernate的基本原理

    詳解Java中Hibernate的基本原理

    持久化是將程序數(shù)據(jù)在持久狀態(tài)和瞬時(shí)狀態(tài)間轉(zhuǎn)換的機(jī)制。JDBC就是一種持久化機(jī)制。文件IO也是一種持久化機(jī)制。下面通過本文給大家介紹Java中Hibernate的基本原理,需要的朋友參考下吧
    2017-09-09
  • Spring SmartLifecycle:如何精準(zhǔn)控制Bean的生命周期

    Spring SmartLifecycle:如何精準(zhǔn)控制Bean的生命周期

    這篇文章主要介紹了Spring SmartLifecycle:如何精準(zhǔn)控制Bean的生命周期問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • java中拼接字符串的5種方法效率對(duì)比

    java中拼接字符串的5種方法效率對(duì)比

    這篇文章主要給大家介紹了關(guān)于java中拼接字符串的5種方法效率對(duì)比的相關(guān)資料,文中通過示例代碼和圖片介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • SpringBoot集成Tomcat服務(wù)架構(gòu)配置

    SpringBoot集成Tomcat服務(wù)架構(gòu)配置

    這篇文章主要為大家介紹了SpringBoot集成Tomcat服務(wù)架構(gòu)配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 簡(jiǎn)單快速對(duì)@RequestParam聲明的參數(shù)作校驗(yàn)操作

    簡(jiǎn)單快速對(duì)@RequestParam聲明的參數(shù)作校驗(yàn)操作

    這篇文章主要介紹了簡(jiǎn)單快速對(duì)@RequestParam聲明的參數(shù)作校驗(yàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java項(xiàng)目如何打包成Jar的實(shí)現(xiàn)步驟

    Java項(xiàng)目如何打包成Jar的實(shí)現(xiàn)步驟

    一般情況下我們都是使用Java項(xiàng)目直接部署發(fā)布,有時(shí)需要我們將寫好的項(xiàng)目打成jar包,方便后期調(diào)用,本文主要介紹了Java項(xiàng)目如何打包成Jar,感興趣的可以了解一下
    2023-11-11
  • 淺談Java生成唯一標(biāo)識(shí)碼的三種方式

    淺談Java生成唯一標(biāo)識(shí)碼的三種方式

    我們經(jīng)常會(huì)遇到這樣的場(chǎng)景,需要生成一個(gè)唯一的序列號(hào)來表明某一個(gè)數(shù)據(jù)的唯一性,本文主要介紹了淺談Java生成唯一標(biāo)識(shí)碼的三種方式,感興趣的可以來了解一下
    2022-01-01
  • java中request對(duì)象各種方法的使用實(shí)例分析

    java中request對(duì)象各種方法的使用實(shí)例分析

    這篇文章主要介紹了java中request對(duì)象各種方法的使用,結(jié)合完整實(shí)例形式較為詳細(xì)的分析了request對(duì)象的功能及其常用方法的使用技巧,需要的朋友可以參考下
    2015-12-12
  • Java中繼承、多態(tài)、重載和重寫介紹

    Java中繼承、多態(tài)、重載和重寫介紹

    這篇文章主要介紹了Java中繼承、多態(tài)、重載和重寫介紹,需要的朋友可以參考下
    2014-07-07

最新評(píng)論

昌图县| 出国| 北票市| 枝江市| 绍兴县| 新竹县| 剑川县| 镶黄旗| 始兴县| 沙田区| 沁水县| 肥城市| 腾冲县| 呼图壁县| 玉环县| 吴旗县| 海林市| 泉州市| 丰都县| 陕西省| 临漳县| 江华| 申扎县| 金堂县| 北流市| 贵溪市| 曲沃县| 察哈| 黔南| 九龙坡区| 安阳县| 乌兰浩特市| 常宁市| 邯郸市| 慈利县| 克拉玛依市| 台江县| 屏东县| 兰溪市| 石门县| 电白县|