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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring(十二)之JDBC框架

發(fā)布時間:2025/3/20 javascript 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring(十二)之JDBC框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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?類的實(shí)例是線程安全配置的。所以你可以配置 JdbcTemplate 的單個實(shí)例,然后將這個共享的引用安全地注入到多個 DAOs 中。

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

?

演示示例如下:

(1)建立mysql數(shù)據(jù)庫,并導(dǎo)入該腳本,庫名可任意命名,這里命名為test,sql腳本為:

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

?

(2)創(chuàng)建實(shí)體

package com.tutorialspoint; public class Student {private Integer age;private String name;private Integer id;public void setAge(Integer age) {this.age = age;}public Integer getAge() {return age;}public void setName(String name) {this.name = name;}public String getName() {return name;}public void setId(Integer id) {this.id = id;}public Integer getId() {return id;} }

?

(3)創(chuàng)建DAO

package com.tutorialspoint; import java.util.List; import javax.sql.DataSource; public interface StudentDAO {/** * This is the method to be used to initialize* database resources ie. connection.*/public void setDataSource(DataSource ds);/** * This is the method to be used to create* a record in the Student table.*/public void create(String name, Integer age);/** * This is the method to be used to list down* a record from the Student table corresponding* to a passed student id.*/public Student getStudent(Integer id);/** * This is the method to be used to list down* all the records from the Student table.*/public List<Student> listStudents();/** * This is the method to be used to delete* a record from the Student table corresponding* to a passed student id.*/public void delete(Integer id);/** * This is the method to be used to update* a record into the Student table.*/public void update(Integer id, Integer age); }

?

(4)創(chuàng)建StudentMapper

package com.tutorialspoint; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; 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;} }

?

(5)創(chuàng)建StudentJDBCTemplate

package com.tutorialspoint; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; public class StudentJDBCTemplate implements StudentDAO {private DataSource dataSource;private JdbcTemplate jdbcTemplateObject; public void setDataSource(DataSource dataSource) {this.dataSource = dataSource;this.jdbcTemplateObject = new JdbcTemplate(dataSource);}public void create(String name, Integer age) {String SQL = "insert into Student (name, age) values (?, ?)"; jdbcTemplateObject.update( SQL, name, age);System.out.println("Created Record Name = " + name + " Age = " + age);return;}public Student getStudent(Integer id) {String SQL = "select * from Student where id = ?";Student student = jdbcTemplateObject.queryForObject(SQL, new Object[]{id}, new StudentMapper());return student;}public List<Student> listStudents() {String SQL = "select * from Student";List <Student> students = jdbcTemplateObject.query(SQL, new StudentMapper());return students;}public void delete(Integer id){String SQL = "delete from Student where id = ?";jdbcTemplateObject.update(SQL, id);System.out.println("Deleted Record with ID = " + id );return;}public void update(Integer id, Integer age){String SQL = "update Student set age = ? where id = ?";jdbcTemplateObject.update(SQL, age, id);System.out.println("Updated Record with ID = " + id );return;} }

?

(6)編寫對應(yīng)的Beans.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd "><!-- Initialization for data source --><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="1234"/></bean><!-- Definition for studentJDBCTemplate bean --><bean id="studentJDBCTemplate" class="com.tutorialspoint.StudentJDBCTemplate"><property name="dataSource" ref="dataSource" /> </bean></beans>

?

(7)編寫MainApp.java并運(yùn)行

package com.tutorialspoint; import java.util.List;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");StudentJDBCTemplate studentJDBCTemplate = (StudentJDBCTemplate)context.getBean("studentJDBCTemplate"); System.out.println("------Records Creation--------" );studentJDBCTemplate.create("Zara", 11);studentJDBCTemplate.create("Nuha", 2);studentJDBCTemplate.create("Ayan", 15);System.out.println("------Listing Multiple Records--------" );List<Student> students = studentJDBCTemplate.listStudents();for (Student record : students) {System.out.print("ID : " + record.getId() );System.out.print(", Name : " + record.getName() );System.out.println(", Age : " + record.getAge());}System.out.println("----Updating Record with ID = 2 -----" );studentJDBCTemplate.update(2, 20);System.out.println("----Listing Record with ID = 2 -----" );Student student = studentJDBCTemplate.getStudent(2);System.out.print("ID : " + student.getId() );System.out.print(", Name : " + student.getName() );System.out.println(", Age : " + student.getAge()); } }

?

運(yùn)行結(jié)果如下:

?

數(shù)據(jù)表數(shù)據(jù)由無變?yōu)橛?

?

轉(zhuǎn)載于:https://www.cnblogs.com/youcong/p/9460819.html

總結(jié)

以上是生活随笔為你收集整理的Spring(十二)之JDBC框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产91九色 | av青青草 | 国产区视频在线观看 | 韩国三级做爰高潮 | 欧美激情在线免费观看 | 精品xxx| 99国产精品一区二区 | 制服.丝袜.亚洲.另类.中文 | 精品人成 | 777精品| 精品国产免费av | 无遮挡又爽又刺激的视频 | 亚洲麻豆 | 两性免费视频 | 少妇性色av | 嫩草影院中文字幕 | 天天做夜夜爱 | 浪潮av色 | 日本五十熟hd丰满 | 久久黑人 | 午夜一二三区 | 欧美精品99久久 | 在线看你懂| 操天天 | 国产精品77| 五月天激情婷婷 | 亚洲小说区图片区都市 | 午夜影院色 | 黄色小视频免费在线观看 | 国产小视频在线观看免费 | 麻豆传媒在线播放 | 成人激情视频在线播放 | 天堂社区av| 免费大片黄在线观看视频网站 | 亚洲码欧美码一区二区三区 | 性爱免费视频 | 国产又黄视频 | 亚欧在线免费观看 | 日韩国产成人在线 | 女生扒开腿让男生操 | 夜夜骑狠狠干 | 国产超碰在线观看 | 色婷婷一区二区三区四区 | 大乳护士喂奶hd | 视频一区免费 | 欧美性色19p | 精品无码成人久久久久久免费 | 久久午夜神器 | 情涩快播| 泽村玲子av | 人人爽人人香蕉 | 午夜国产免费 | 福利小视频在线播放 | 性色欲情网站iwww九文堂 | 外国黄色网址 | 91午夜精品亚洲一区二区三区 | 色漫 | 蜜桃一区二区三区 | 亚洲精品69 | 男人看片网站 | 国内自拍青青草 | 亚洲中文一区二区三区 | 韩国av不卡 | 深夜视频在线观看 | 4444亚洲人成无码网在线观看 | 国产真实生活伦对白 | 欧美一级艳片视频免费观看 | 毛片在线免费播放 | 天天操夜夜操夜夜操 | 美国免费黄色片 | 狠狠干老司机 | www.色啪啪.com| 亚洲v在线观看 | 精品人妻大屁股白浆无码 | 人物动物互动39集免费观看 | 免费成人黄色网 | 91无套直看片红桃 | 91av免费在线观看 | 麻豆精品国产 | 涩涩屋视频在线观看 | 日本超碰| 久久精品国产77777蜜臀 | 久久久久久亚洲精品中文字幕 | 91在线网址 | 成人在线播放网站 | 日本三级aaa | 国产青青草 | 无码精品人妻一二三区红粉影视 | 乖疼润滑双性初h | 男生和女生一起差差差很痛的视频 | 国产一级一区二区 | 久久久久久亚洲av无码专区 | 国产九色在线播放九色 | 中文一二三区 | 麻豆社| 三级做爰第一次 | 99国产精品99久久久久久 | 欧美三级理论片 | 97影院手机版 |