2012-10-09 7 views
5

ResultSetExtractorを使用してデータベースからデータを取得する方法? ここで私はバックエンドとしてOracle 10gを使用しています。従業員テーブルから従業員の詳細を検索する場合、ResultSetExtractorまたはRowMapperを使用する方が良いですか?春のJDBCに良い記事がありSpring ResultSetExtractor

答えて

2

check this

には、次の使用例である:
PersonResultSetExtractorクラス:

package dao.mapper; 

import java.sql.ResultSet; 
import java.sql.SQLException; 

import org.springframework.jdbc.core.ResultSetExtractor; 

import domainmodel.Person; 

public class PersonResultSetExtractor implements ResultSetExtractor { 

    @Override 
    public Object extractData(ResultSet rs) throws SQLException { 
    Person person = new Person(); 
    person.setFirstName(rs.getString(1)); 
    person.setLastName(rs.getString(2)); 
    return person; 
    } 

} 

RowMapperの:

package dao.mapper; 

    import java.sql.ResultSet; 
    import java.sql.SQLException; 

    import org.springframework.jdbc.core.RowMapper; 

    public class PersonRowMapper implements RowMapper { 

     @Override 
     public Object mapRow(ResultSet rs, int line) throws SQLException { 
     PersonResultSetExtractor extractor = new PersonResultSetExtractor(); 
     return extractor.extractData(rs); 
     } 

    } 
+0

あなたのお返事ありがとうございます。それは非常に便利です。 –

+0

私はまた、 'ResultSetExtractor'だけを使ってもう1つの方法を見つけます。コードはここにあります –

+2

カーソルは最初に最初の行の前に配置されているので、rs.next()を呼び出すことを忘れないでください。 –

0

シンプルな例:

MyDataStructure result = jdbcTemplate.query(sql, new ResultSetExtractor<MyDataStructure>() { 

    @Override 
    public MyDataStructure extractData(final ResultSet rs) throws ... { 
    // collect data from rs here ... 
    return myData; 
    } 
}); 
0

javaの8ので、一つでも行マッピング・ルーチンとして閉鎖(ラムダ)を使用することができます。

String sql = "select first_name, last_name from PERSON where id = ?"; 

public Person jdbcTemplate.query(sql,(rs)->{return new Person(rs.getString("first_name"), rs.getString("last_name"));}, int id); 

まずメソッドのparamは 秒、クエリである - あなたのマッパー - パーソン(文字列、String)コンストラクタが必要とされています。 "first_name"、 "last_name"はdb列の名前です。 第3引数 - idのarg、それ以上のパラメータを置くことができるvarargです。

関連する問題