مشخصات مقاله
-
534
-
0.0
-
1623
-
0
-
0
آموزش RowMapper-Java Spring
RowMapper
مثال RowMapper – واکشی رکوردها با استفاده از قالب Jdbc در اسپرینگ
همانند ResultSetExtractor، می¬توان توسط متد query() در کلاس قالب Jdbc ، با استفاده از واسط RowMapper ، رکوردها ها را از پایگاه داده واکشی کرد.
نحو متد query با استفاده از RowMapper
public T query(String sql,RowMapper< T > rm)
واسط RowMapper
واسط RowMapper به شما این امکان را می¬دهد تا یک ردیف از روابط (a row of the relations) را بر نمونه کلاسی که توسط کاربر تعریف شده است نگاشت کنید. درون خود، مجموعه نتایج را تکرار می کند و به مجموعه اضافه می کند. بنابراین مشابه ResultSetExtractor نیاز به نوشتن حجم زیادی از کد برای واکشی رکوردها نداریم.
مزیت¬های RowMapper نسبت به ResultSetExtractor
RowMapper در نوشتن حجم زیادی از کد صرفه جویی می کند، زیرا درون خود، داده های مجموعه نتایج را به مجموعه اضافه می کند.
متد واسط RowMapper
تنها یک متد mapRow که نمونه مجموعه نتایج (ResultSet instance) و int را به عنوان پارامتر لیست می پذیرد، را تعریف می کند. نحو این متد در ادامه آمده است.
public T mapRow(ResultSet rs, int rowNumber)throws SQLException
مثال واسط RowMapper برای نمایش همه رکوردهای جدول
فرض میکنیم جدول زیر را درون پایگاه داده Oracle10g ایجاد کرده اید.
create table employee( id number(10), name varchar2(100), salary number(10) );
Employee.java
این کلاس شامل سه خصیصه به همراه سازنده ها و setter و getter ها و یک متد اضافی toString() است.
package com.javatpoint;
public class Employee {
private int id;
private String name;
private float salary;
//no-arg and parameterized constructors
//getters and setters
public String toString(){
return id+" "+name+" "+salary;
}
}
EmployeeDao.java
این شامل یک خصیصه قالب Jdbc و یک متد getAllEmployeesRowMapper است .
package com.javatpoint;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;
public class EmployeeDao {
private JdbcTemplate template;
public void setTemplate(JdbcTemplate template) {
this.template = template;
}
public List < Employee > getAllEmployeesRowMapper(){
return template.query("select * from employee",new RowMapper(){
@Override
public Employee mapRow(ResultSet rs, int rownumber) throws SQLException {
Employee e=new Employee();
e.setId(rs.getInt(1));
e.setName(rs.getString(2));
e.setSalary(rs.getInt(3));
return e;
}
});
}
}
applicationContext.xml
از DriverManagerDataSource برای نگهداری اطلاعات درباره پایگاه داده، از جمله نام کلاس driver، اتصال URL، نام کاربری و رمز عبور استفاده می شود. یک خصیصه به نام datasource در کلاس قالبJdbc از نوع DriverManagerDataSource وجود دارد. بنابراین برای خصیصه datasource باید مرجع شی DriverManagerDataSource در کلاس قالبJdbc را آماده کنیم. در اینجا از شی قالب Jdbc در کلاس EmployeeDao استفاده می کنیم. بنابراین از متد setter برای پاس دادن آن استفاده می کنیم. شما همچنین می توانید از سازنده استفاده کنید.
< ?xml version="1.0" encoding="UTF-8" ? >
< beans 3. xmlns="http://www.springframework.org/schema/beans"
4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5. xmlns:p="http://www.springframework.org/schema/p"
6. xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" >
< bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
< property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
< property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
< property name="username" value="system" />
< property name="password" value="oracle" />
< /bean>
< bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
< property name="dataSource" ref="ds">< /property>
< /bean>
< bean id="edao" class="com.javatpoint.EmployeeDao">
< property name="jdbcTemplate" ref="jdbcTemplate">< /property>
< /bean>
< /beans>
Test.java
این کلاس bean را از فایل applicationContext.xml می گیرد و متد getAllEmployeesRowMapper() از کلاس EmployeeDao را فراخوانی می کند.
1. package com.javatpoint;
2.
3. import java.util.List;
4.
5. import org.springframework.context.ApplicationContext;
6. import org.springframework.context.support.ClassPathXmlApplicationContext;
7. public class Test {
8. public static void main(String[] args) {
9. ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
10. EmployeeDao dao=(EmployeeDao)ctx.getBean("edao");
11. List< Employee> list=dao.getAllEmployeesRowMapper();
12.
13. for(Employee e:list)
14. System.out.println(e);
15. }
16. }