Spring JDBC - RowMapper Arayüzü
org.springframework.jdbc.core.RowMapper<T>arabirim, JdbcTemplate tarafından her satıra göre bir ResultSet'in satırlarını eşlemek için kullanılır. Bu arayüzün uygulamaları, her satırı bir sonuç nesnesine eşleme fiili çalışmasını gerçekleştirir. SQLExceptions eğer atılanlardan herhangi biri yakalanır ve çağıran JdbcTemplate tarafından işlenir.
Arayüz Beyanı
Aşağıdaki beyanı org.springframework.jdbc.core.RowMapper<T> arayüz -
public interface RowMapper<T>
Kullanım
Step 1 - Yapılandırılmış bir veri kaynağı kullanarak bir JdbcTemplate nesnesi oluşturun.
Step 2 - RowMapper arayüzünü uygulayan bir StudentMapper nesnesi oluşturun.
Step 3 - StudentMapper nesnesini kullanırken veritabanı işlemleri yapmak için JdbcTemplate nesne yöntemlerini kullanın.
Aşağıdaki örnek, spring jdbc kullanarak bir sorgunun nasıl okunacağını gösterecektir. StudentMapper nesnesini kullanarak Öğrenci Tablosundan Öğrenci nesnesine okuma kayıtlarını eşleyeceğiz.
Sözdizimi
String SQL = "select * from Student";
List <Student> students = jdbcTemplateObject.query(SQL, new StudentMapper());
Nerede
SQL - Tüm öğrenci kayıtlarını okumak için sorguyu okuyun.
jdbcTemplateObject - Öğrenci kayıtlarını veritabanından okumak için StudentJDBCTemplate nesnesi.
StudentMapper - StudentMapper, öğrenci kayıtlarını öğrenci nesnelerine eşleme nesnesi.
Spring JDBC ile ilgili yukarıda bahsedilen kavramları anlamak için StudentMapper nesnesini kullanarak bir sorgu ve harita sonucunu okuyacak bir örnek yazalım. Örneğimizi yazmak için, yerinde çalışan bir Eclipse IDE'ye sahip olalım ve bir Spring uygulaması oluşturmak için aşağıdaki adımları kullanalım.
Adım | Açıklama |
---|---|
1 | Spring JDBC - First Application bölümünde oluşturulan öğrenci projesini güncelleyin . |
2 | Fasulye yapılandırmasını güncelleyin ve uygulamayı aşağıda açıklandığı gibi çalıştırın. |
Veri Erişim Nesnesi arayüz dosyasının içeriği aşağıdadır 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();
}
Aşağıdakilerin içeriği Student.java dosya.
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;
}
}
Aşağıdakilerin içeriği StudentMapper.java dosya.
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;
}
}
Uygulama sınıfı dosyası aşağıdadır StudentJDBCTemplate.java tanımlı DAO arayüzü StudentDAO için.
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;
}
}
Aşağıdakilerin içeriği MainApp.java dosya
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());
}
}
}
Yapılandırma dosyası aşağıdadır 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>
Kaynak ve bean yapılandırma dosyalarını oluşturmayı tamamladığınızda uygulamayı çalıştırmamıza izin verin. Uygulamanızda her şey yolundaysa, aşağıdaki mesajı yazdıracaktır.
------Listing Multiple Records--------
ID : 1, Name : Zara, Age : 17
ID : 3, Name : Ayan, Age : 18