مشخصات مقاله
-
524
-
0.0
-
1657
-
0
-
0
آموزش ResultSetExtractor-Java Spring
ResultSetExtractor
مثال ResultSetExtractor -- واکشی رکوردها با استفاده از قالب Jdbc در اسپرینگ
به سادگی می توان با استفاده از متد query() در کلاس قالب Jdbc – جایی که باید نمونه ResultSetExtractor را پاس دهیم – رکوردها را از پایگاه داده واکشی کرد.
نحوه متد query با استفاده از ResultSetExtractor
public T query(String sql,ResultSetExtractor< T > rse)
واسط ResultSetExtractor
واسط ResultSetExtractor برای واکشی رکوردها از پایگاه داده مورد استفاده قرار می گیرد. یک مجموعه نتایج (resultSet) را قبول می کند و یک لیست را باز می گرداند.
متد واسط ResultSetExtractor
تنها یک متد extractData که نمونه مجموعه نتایج را به عنوان پارامتر قبول می کند، تعریف می کند. نحو این متد در ادامه آمده است.
public T extractData(ResultSet rs)throws SQLException,DataAccessException
مثال واسط ResultSetExtractor برای نمایش همه رکوردهای یک جدول
فرض میکنیم جدول زیر را درون پایگاه داده 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 و یک متد getAllEmployees است .
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;
public class EmployeeDao {
private JdbcTemplate template;
public void setTemplate(JdbcTemplate template) {
this.template = template;
}
public List < Employee > getAllEmployees(){
return template.query("select * from employee",new ResultSetExtractor < List < Employee > >(){
@Override
public List < Employee > extractData(ResultSet rs) throws SQLException,
DataAccessException {
List < Employee > list=new ArrayList < Employee >();
while(rs.next()){
Employee e=new Employee();
e.setId(rs.getInt(1));
e.setName(rs.getString(2));
e.setSalary(rs.getInt(3));
list.add(e);
}
return list;
}
});
}
}
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 می گیرد و متد getAllEmployees() از کلاس EmployeeDao را فراخوانی می کند.
package com.javatpoint;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
EmployeeDao dao=(EmployeeDao)ctx.getBean("edao");
List < Employee > list=dao.getAllEmployees();
for(Employee e:list)
System.out.println(e);
}
}