javascript
Spring JDBC 框架一个最简单的Hello World级别的例子
本地安裝mySQL數據庫社區版,如果不知道如何安裝,可以查看我這篇文章:
MySQL社區版的下載和安裝
https://blog.csdn.net/i042416/article/details/107600796
使用普通的 JDBC 數據庫時,需要繁瑣地寫很多代碼來處理異常,打開和關閉數據庫連接等。但 Spring JDBC 框架負責所有的底層細節,從開始打開連接,準備和執行 SQL 語句,處理異常,處理事務,到最后關閉連接。
Spring JDBC的JdbcTemplate 類執行 SQL 查詢、更新語句和存儲過程調用,執行迭代結果集和提取返回參數值。它也捕獲 JDBC 異常并轉換它們到 org.springframework.dao 包中定義的通用類、更多的信息、異常層次結構。
JdbcTemplate 類的實例是線程安全配置的。所以你可以配置 JdbcTemplate 的單個實例,然后將這個共享的引用安全地注入到多個 DAOs 中。
使用 JdbcTemplate 類時常見的做法是在你的 Spring 配置文件中配置數據源,然后共享數據源 bean 依賴注入到 DAO 類中,并在數據源的設值函數中創建了 JdbcTemplate。
在TEST數據庫下創建一個新的數據庫表Student:
CREATE TABLE Student(ID INT NOT NULL AUTO_INCREMENT,NAME VARCHAR(20) NOT NULL,AGE INT NOT NULL,PRIMARY KEY (ID) );(1) 創建數據訪問對象接口DAO - Data access object:
DAO 代表常用的數據庫交互的數據訪問對象。DAOs 提供一種方法來讀取數據并將數據寫入到數據庫中,它們應該通過一個接口顯示此功能,應用程序的其余部分將訪問它們。
在 Spring 中,數據訪問對象(DAO)支持很容易用統一的方法使用數據訪問技術,如 JDBC、Hibernate、JPA 或者 JDO。
StudentDAO.java的源代碼:
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); }(2) 創建Student.java, 包含id,name和age三個字段,對應我們之前在mysql數據庫里創建的student數據庫表:
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) 創建StudentMapper,將mySQL數據庫表User的字段映射到Java POJO Student類的成員變量上去:
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;} }(4) 創建DAO的實現類:StudentJDBCTemplate.java
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;} }(5) MainApp:
import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.tutorialspoint.StudentJDBCTemplate; 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()); } }(6) 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="123456"/></bean><!-- Definition for studentJDBCTemplate bean --><bean id="studentJDBCTemplate" class="com.sap.StudentJDBCTemplate"><property name="dataSource" ref="dataSource" /> </bean></beans>(7) 記住將mysql-connector-java.jar添加到Java項目的build path里.
運行MainApp.java, 看到如下輸出,說明應用正常工作:
Jul 27, 2020 2:58:49 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@32a1bec0: startup date [Mon Jul 27 14:58:49 CST 2020]; root of context hierarchy Jul 27, 2020 2:58:49 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [Beans.xml] Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. Jul 27, 2020 2:58:49 PM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName INFO: Loaded JDBC driver: com.mysql.jdbc.Driver ------Records Creation-------- Created Record Name = Zara Age = 11 Created Record Name = Nuha Age = 2 Created Record Name = Ayan Age = 15 ------Listing Multiple Records-------- ID : 1, Name : Zara, Age : 11 ID : 2, Name : Nuha, Age : 20 ID : 3, Name : Ayan, Age : 15 ID : 4, Name : Zara, Age : 11 ID : 5, Name : Nuha, Age : 2 ID : 6, Name : Ayan, Age : 15 ----Updating Record with ID = 2 ----- Updated Record with ID = 2 ----Listing Record with ID = 2 ----- ID : 2, Name : Nuha, Age : 20
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的Spring JDBC 框架一个最简单的Hello World级别的例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在大学城卖什么小吃好呢
- 下一篇: 谁知道海贼王里面主要人物的年龄