Springjdbc 简明教程
Spring JDBC - JdbcTemplate Class
org.springframework.jdbc.core.JdbcTemplate 类是 JDBC 核心包中的中心类。它简化了对 JDBC 的使用,并有助于避免常见错误。这个类执行核心 JDBC 工作流,剩下应用程序代码提供 SQL 和提取结果。此类执行 SQL 查询或更新,启动对结果集的迭代,并捕获 JDBC 异常并将其转换成 org.springframework.dao 包中定义的通用且更具信息性的异常层次结构。
The org.springframework.jdbc.core.JdbcTemplate class is the central class in the JDBC core package. It simplifies the use of JDBC and helps to avoid common errors. It executes core JDBC workflow, leaving the application code to provide SQL and extract results. This class executes SQL queries or updates, initiating iteration over ResultSets and catching JDBC exceptions and translating them to the generic, more informative exception hierarchy defined in the org.springframework.dao package.
Class Declaration
以下是 org.springframework.jdbc.core.JdbcTemplate 类的声明——
Following is the declaration for org.springframework.jdbc.core.JdbcTemplate class −
public class JdbcTemplate
extends JdbcAccessor
implements JdbcOperations
Usage
-
Step 1 − Create a JdbcTemplate object using a configured datasource.
-
Step 2 − Use JdbcTemplate object methods to make database operations.
Example
以下示例将演示如何使用 JdbcTemplate 类读取查询。我们将读取学生表中的可用记录。
Following example will demonstrate how to read a query using JdbcTemplate class. We’ll read the available records in Student Table.
Syntax
String selectQuery = "select * from Student";
List <Student> students = jdbcTemplateObject.query(selectQuery, new StudentMapper());
其中,
Where,
-
selectQuery − Select query to read students.
-
jdbcTemplateObject − StudentJDBCTemplate object to read student object from the database.
-
StudentMapper − StudentMapper is a RowMapper object to map each fetched record to the student object.
为了理解与 Spring JDBC 相关的上述概念,我们编写一个将选择一个查询的示例。为了编写我们的示例,让我们有一个可用的 Eclipse IDE 并使用以下步骤创建一个 Spring 应用程序。
To understand the above-mentioned concepts related to Spring JDBC, let us write an example which will select a query. To write our example, let us have a working Eclipse IDE in place and use the following steps to create a Spring application.
Step |
Description |
1 |
Update the project Student created under chapter Spring JDBC - First Application. |
2 |
Update the bean configuration and run the application as explained below. |
以下是对数据访问对象接口文件 StudentDAO.java 的内容。
Following is the content of the Data Access Object interface file StudentDAO.java.
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 list down
* all the records from the Student table.
*/
public List<Student> listStudents();
}
以下是 Student.java 文件的内容。
Following is the content of the Student.java file.
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;
}
}
以下是对 StudentMapper.java 文件的内容。
Following is the content of the StudentMapper.java file.
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;
}
}
以下是对所定义的 DAO 接口 StudentDAO 实现的类文件 StudentJDBCTemplate.java 。
Following is the implementation class file StudentJDBCTemplate.java for the defined DAO interface StudentDAO.
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 List<Student> listStudents() {
String SQL = "select * from Student";
List <Student> students = jdbcTemplateObject.query(SQL, new StudentMapper());
return students;
}
}
以下是 MainApp.java 文件的内容。
Following is the content of the MainApp.java file.
package com.tutorialspoint;
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("------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());
}
}
}
以下是配置文件 Beans.xml 。
Following is the configuration file 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/beans
http://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.cj.jdbc.Driver"/>
<property name = "url" value = "jdbc:mysql://localhost:3306/TEST"/>
<property name = "username" value = "root"/>
<property name = "password" value = "admin"/>
</bean>
<!-- Definition for studentJDBCTemplate bean -->
<bean id="studentJDBCTemplate"
class = "com.tutorialspoint.StudentJDBCTemplate">
<property name = "dataSource" ref = "dataSource" />
</bean>
</beans>
一旦您完成创建源代码和 bean 配置文件,让我们运行此应用程序。如果应用程序一切正常,它将打印以下信息。
Once you are done creating the source and bean configuration files, let us run the application. If everything is fine with your application, it will print the following message.
------Listing Multiple Records--------
ID : 1, Name : Zara, Age : 11
ID : 2, Name : Nuha, Age : 2
ID : 3, Name : Ayan, Age : 15