کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش 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);           
    }    
}  
1398/12/20 1657 524
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...