ResultSetExtractor
を使用してデータベースからデータを取得する方法? ここで私はバックエンドとしてOracle 10gを使用しています。従業員テーブルから従業員の詳細を検索する場合、ResultSetExtractor
またはRowMapper
を使用する方が良いですか?春のJDBCに良い記事がありSpring ResultSetExtractor
5
A
答えて
2
には、次の使用例である:
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
シンプルな例:
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です。
関連する問題
- 1. ResultSetExtractor内のgetIntでのパフォーマンスの問題
- 2. RowMapper、ResultSetExtractor、バインド変数、およびクエリの種類は何ですか?
- 3. Spring + Hibernate + Spring
- 4. Struts + Spring + Spring管理トランザクション+ hibernate
- 5. Springデータ、Hibernate 4.1.1、Spring JTAトランザクションマネージャ
- 6. Springデータレスト/ Spring Hateoasカスタムコントローラ - PersistentEntityResourceAssembler
- 7. SpringバッチアプリケーションとSpringバッチ管理
- 8. Spring + GWTまたはSpring対GWT
- 9. Spring 2.5からSpring 3.0.5への移行
- 10. デフォルトの管理ユーザー(Spring 3、Spring Security)
- 11. Alfrescoのspring surf vs classic spring mvc
- 12. Spring @Transactional v Springセキュリティ@Secured inconsistent behavior
- 13. Spring統合とSpring MVCの統合
- 14. Spring 2からSpring 3への変更
- 15. Spring Web ServicesのSpringセキュリティフィルタと認証
- 16. Maven依存性spring-webとspring-webmvc
- 17. Spring Hibernate Vs jdbcテンプレートとspring orm
- 18. Spring 3.1 MVC、Spring Security 3.1 - CSRFトークン
- 19. Springのコア3.2.2 + Springのセキュリティ3.1.4:java.lang.IncompatibleClassChangeError:org.springframework.asm.ClassVisitor
- 20. Spring ConfigによるSpringデータリポジトリのスキャン?
- 21. Spring MVCのプロジェクトで、別のSpring Bean
- 22. Spring Adotemplate.commandtimeout
- 23. spring authorization
- 24. ソフトウェアトランザクションメモリ+ Spring
- 25. Glassfish + Spring
- 26. Springコントローラプログラミングスタイル
- 27. Spring Framework
- 28. Spring RequestMapping
- 29. Spring Framework
- 30. Springパッケージスワップ
あなたのお返事ありがとうございます。それは非常に便利です。 –
私はまた、 'ResultSetExtractor'だけを使ってもう1つの方法を見つけます。コードはここにあります –
カーソルは最初に最初の行の前に配置されているので、rs.next()を呼び出すことを忘れないでください。 –