Springjdbc 简明教程
Spring JDBC - RowMapper Interface
JdbcTemplate 使用 org.springframework.jdbc.core.RowMapper<T> 接口在每行基础上映射 ResultSet 行。此接口的实现执行将每一行映射到结果对象的实际工作。如果抛出任何 SQLException,调用方 JdbcTemplate 将捕获并处理它们。
The org.springframework.jdbc.core.RowMapper<T> interface is used by JdbcTemplate for mapping rows of a ResultSet on a per-row basis. Implementations of this interface perform the actual work of mapping each row to a result object. SQLExceptions if any thrown will be caught and handled by the calling JdbcTemplate.
Interface Declaration
下面是 org.springframework.jdbc.core.RowMapper<T> 接口的声明 -
Following is the declaration for org.springframework.jdbc.core.RowMapper<T> interface −
public interface RowMapper<T>
Usage
-
Step 1 − Create a JdbcTemplate object using a configured datasource.
-
Step 2 − Create a StudentMapper object implementing RowMapper interface.
-
Step 3 − Use JdbcTemplate object methods to make database operations while using StudentMapper object.
以下示例将演示如何使用 Spring JDBC 读取查询。我们将使用 StudentMapper 对象将从 Student 表读取的记录映射到 Student 对象。
Following example will demonstrate how to read a query using spring jdbc. We’ll map read records from Student Table to Student object using StudentMapper object.
Syntax
String SQL = "select * from Student";
List <Student> students = jdbcTemplateObject.query(SQL, new StudentMapper());
其中
Where
-
SQL − Read query to read all student records.
-
jdbcTemplateObject − StudentJDBCTemplate object to read student records from database.
-
StudentMapper − StudentMapper object to map student records to student objects.
为了理解与 Spring JDBC 相关的上述概念,我们编写一个将读取查询并使用 StudentMapper 对象映射结果的示例。为了编写我们的示例,让我们有一个可用的 Eclipse IDE 并使用以下步骤创建一个 Spring 应用程序。
To understand the above-mentioned concepts related to Spring JDBC, let us write an example which will read a query and map result using StudentMapper object. 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. |
这是 Data Access Object 接口文件 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 : 17
ID : 3, Name : Ayan, Age : 18