多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2

wkspring教程

Spring JDBC 框架

閱讀 (2107)

JDBC 框架概述

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

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

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

JdbcTemplate 類

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

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

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

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

我們在數(shù)據(jù)庫 TEST 中創(chuàng)建一個數(shù)據(jù)庫表 Student。假設(shè)你正在使用 MySQL 數(shù)據(jù)庫,如果你使用其他數(shù)據(jù)庫,那么你可以改變你的 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)在,我們需要提供一個數(shù)據(jù)源到 JdbcTemplate 中,所以它可以配置本身來獲得數(shù)據(jù)庫訪問。你可以在 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ù)訪問對象(DAO)

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

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

執(zhí)行 SQL 語句

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

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

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

查詢一個 long 類型:

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

一個使用綁定變量的簡單查詢:

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);

查詢并返回一個對象:

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;
   }
}

查詢并返回多個對象:

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 語句。下面是一個使用 CREATE 語句創(chuàng)建一個表的示例:

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 框架:

序號例子 & 描述
1Spring JDBC Example

這個例子將解釋如何編寫一個簡單的基于 Spring 應(yīng)用程序的 JDBC。

2SQL Stored Procedure in Spring

學(xué)習(xí)在使用 Spring 中的 JDBC 時如何調(diào)用 SQL 存儲過程。

關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美在线一区二区三区不卡 | 国产91久久久久久久免费 | 欧美精品一区二区在线观看 | 一二三四在线观看免费播放视频 | 羞羞视频免费看网站 | 亚洲欧美日韩综合一区久久 | 图片区小说区号综合区 | 亚洲jizzjizz中文在线播放 | 亚洲综合春色另类久久 | 日本一级不卡一二三区免费 | 亚洲国产精久久久久久久春色 | 国产成人免费手机在线观看视频 | 羞羞在线| 亚洲色图另类小说 | 亚洲成人图 | 午夜理伦三级理论三级60 | 欧美三级中文字幕hd | 亚洲视频区| 亚洲一区二区三区四 | 精品国产国产综合精品 | 日本a毛片| 午夜免费福利影院 | 亚洲国产成人久久综合区 | 亚洲综合福利 | 欧美三级韩国三级日本一级 | 国产精品东北一极毛片 | 高清欧美一区二区三区 | 国产第一页精品 | jizz性欧美3| www.日本在线播放 | 欧美两性人xxxx高清免费 | 欧洲精品一区二区三区 | tom影院亚洲国产日本一区 | 日本一区二区在线视频 | 日本护士xxxxx在线 | 亚洲欧美在线播放 | 亚洲 欧美 成人日韩 | 嫩草影院在线观看未满十八 | 色一情一伦一区二区三 | 午夜宅男在线 | 久久www免费人成_看片高清 |