Spring JDBC - Antarmuka RowMapper
Itu org.springframework.jdbc.core.RowMapper<T>antarmuka digunakan oleh JdbcTemplate untuk memetakan baris dari ResultSet pada basis per baris. Implementasi antarmuka ini melakukan pekerjaan sebenarnya untuk memetakan setiap baris ke objek hasil. SQLExceptions jika ada yang terlempar akan ditangkap dan ditangani oleh panggilan JdbcTemplate.
Deklarasi Antarmuka
Berikut adalah deklarasi untuk org.springframework.jdbc.core.RowMapper<T> antarmuka -
public interface RowMapper<T>
Pemakaian
Step 1 - Buat objek JdbcTemplate menggunakan sumber data yang dikonfigurasi.
Step 2 - Membuat objek StudentMapper yang mengimplementasikan antarmuka RowMapper.
Step 3 - Gunakan metode objek JdbcTemplate untuk membuat operasi database saat menggunakan objek StudentMapper.
Contoh berikut akan menunjukkan cara membaca kueri menggunakan spring jdbc. Kita akan memetakan rekaman yang telah dibaca dari Tabel Siswa ke objek Siswa menggunakan objek StudentMapper.
Sintaksis
String SQL = "select * from Student";
List <Student> students = jdbcTemplateObject.query(SQL, new StudentMapper());
Dimana
SQL - Baca permintaan untuk membaca semua catatan siswa.
jdbcTemplateObject - StudentJDBCTemplate objek untuk membaca catatan siswa dari database.
StudentMapper - Objek StudentMapper untuk memetakan catatan siswa ke objek siswa.
Untuk memahami konsep yang disebutkan di atas terkait dengan Spring JDBC, mari kita tulis sebuah contoh yang akan membaca hasil query dan peta menggunakan objek StudentMapper. Untuk menulis contoh kita, mari kita memiliki IDE Eclipse yang berfungsi dan menggunakan langkah-langkah berikut untuk membuat aplikasi Spring.
Langkah | Deskripsi |
---|---|
1 | Perbarui proyek yang dibuat Siswa di bawah bab Musim Semi JDBC - Aplikasi Pertama . |
2 | Perbarui konfigurasi kacang dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten file antarmuka Objek Akses Data 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();
}
Berikut ini adalah konten dari Student.java mengajukan.
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;
}
}
Berikut ini adalah konten dari StudentMapper.java mengajukan.
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;
}
}
Berikut adalah file kelas implementasi StudentJDBCTemplate.java untuk antarmuka DAO yang ditentukan 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan
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());
}
}
}
Berikut adalah file konfigurasinya 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>
Setelah Anda selesai membuat file konfigurasi source dan bean, mari kita jalankan aplikasi. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
------Listing Multiple Records--------
ID : 1, Name : Zara, Age : 17
ID : 3, Name : Ayan, Age : 18