Spring JDBC - interfejs RowMapper
Plik org.springframework.jdbc.core.RowMapper<T>interfejs jest używany przez JdbcTemplate do mapowania wierszy zestawu wyników na podstawie każdego wiersza. Implementacje tego interfejsu wykonują rzeczywistą pracę polegającą na mapowaniu każdego wiersza na obiekt wynikowy. SQLExceptions, jeśli jakiekolwiek zgłoszenie zostanie przechwycone i obsługiwane przez wywołujący JdbcTemplate.
Deklaracja interfejsu
Poniżej znajduje się deklaracja dla org.springframework.jdbc.core.RowMapper<T> interfejs -
public interface RowMapper<T>
Stosowanie
Step 1 - Utwórz obiekt JdbcTemplate przy użyciu skonfigurowanego źródła danych.
Step 2 - Utwórz obiekt StudentMapper implementujący interfejs RowMapper.
Step 3 - Użyj metod obiektu JdbcTemplate do wykonywania operacji na bazie danych podczas korzystania z obiektu StudentMapper.
Poniższy przykład pokaże, jak czytać zapytanie przy użyciu spring jdbc. Zmapujemy odczytane rekordy z tabeli ucznia do obiektu studenta za pomocą obiektu StudentMapper.
Składnia
String SQL = "select * from Student";
List <Student> students = jdbcTemplateObject.query(SQL, new StudentMapper());
Gdzie
SQL - Przeczytaj zapytanie, aby przeczytać wszystkie rekordy uczniów.
jdbcTemplateObject - Obiekt StudentJDBCTemplate do odczytu rekordów uczniów z bazy danych.
StudentMapper - Obiekt StudentMapper do mapowania rekordów uczniów na obiekty uczniów.
Aby zrozumieć powyższe koncepcje związane z Spring JDBC, napiszmy przykład, który odczyta zapytanie i zmapuje wynik za pomocą obiektu StudentMapper. Aby napisać nasz przykład, uruchommy działające środowisko Eclipse IDE i wykonaj następujące kroki, aby utworzyć aplikację Spring.
Krok | Opis |
---|---|
1 | Zaktualizuj projekt Studenta utworzony w rozdziale Wiosna JDBC - Pierwsza aplikacja . |
2 | Zaktualizuj konfigurację fasoli i uruchom aplikację, jak wyjaśniono poniżej. |
Poniżej znajduje się zawartość pliku interfejsu obiektu dostępu do danych 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();
}
Poniżej znajduje się zawartość Student.java plik.
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;
}
}
Poniżej znajduje się zawartość StudentMapper.java plik.
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;
}
}
Poniżej znajduje się plik klasy implementacji StudentJDBCTemplate.java dla zdefiniowanego interfejsu DAO 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;
}
}
Poniżej znajduje się zawartość MainApp.java plik
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());
}
}
}
Poniżej znajduje się plik konfiguracyjny 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.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>
Po utworzeniu plików źródłowych i konfiguracyjnych komponentów bean uruchom aplikację. Jeśli wszystko jest w porządku z Twoją aplikacją, wydrukuje następujący komunikat.
------Listing Multiple Records--------
ID : 1, Name : Zara, Age : 17
ID : 3, Name : Ayan, Age : 18