18 Apr 2017

1. Spring JDBC を使った書籍テーブル検索

1-1. 実習テーマ

  1. Spring JDBC を使用してデータベースに接続する
  2. データベースを検索して書籍テーブルから書籍一覧情報を取得する

step04_image

1-2.今回やること および 学習ポイント

  1. Spring JDBC を使用してデータベースに接続する
    • やること
      • PostgreSQL データベース上に書籍テーブルを作成する
      • Spring JDBC に必要なライブラリの取り込み(pom.xml)
      • Spring JDBC で PostgreSQL に接続するための設定を追加
    • 学習ポイント
      • Spring JDBC に必要なライブラリや環境設定手順を把握する
  2. データベースを検索して書籍テーブルから書籍一覧情報を取得する
    • 書籍一覧 DAO クラスに書籍テーブル検索処理を実装する
      • Spring JDBC を使用したデータベース検索方法を習得
      • データベース検索結果をドメインオブジェクトにマッピングする方法を把握する

2. 技術解説 - Spring JDBC を使用したデータ検索処理

2-1. Spring JDBC とは

2-2. Spring JDBC の適用箇所

JDBCArchtecture

レイヤ コンポーネント 主な Spring 提供機能
プレゼンテーション層 コントローラ Spring MVC、DI、AOP
ビジネスロジック層 サービス、ドメイン Validation、Spring Transaction、DI、AOP
データアクセス層 DAO Spring JDBC、ORM、DI、AOP

2-3. Spring JDBC によるデータベース検索の流れ

2-4. Spring JDBC を使用したDB検索プログラミング

2-4-1. 単一データの取得コードサンプル

  1. 一つの数値を取得する場合

     int number = jdbcTemplate.queryForInt("SELECT ....");
    
  2. 一つのオブジェクト(主にStringやDateなど)を取得する場合

    String text = jdbcTemplate.queryForObject("SELECT ....");
    
  3. ある単一行のデータをMap(Stringにカラム名、Objectにデータ)に格納する場合

     int number = jdbcTemplate.queryForInt("SELECT ....");
    
  4. ある単一行のデータをドメインクラスにマッピングする場合

    class myRowMapper implements RowMapper<Book> {
      public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
        Book book = new Book();
        book.setId(rs.getInt("id");
        book.setIsbn(rs.getString("isbn");
        book.setName(rs.getString("name");
        return book;
      }
    }
    Book book = jdbcTemplate.queryForObject (
            "SELECT * FROM book WEHRE id = ?", new myRowMapper(), id);
    

2-4-2. 複数データの取得コードサンプル

  1. 複数レコードのMap(Stringにカラム名、Objectにデータ)をListに格納する場合

     List<Map<String, Object>> mapList = jdbcTemplate.queryForList("SELECT ...");
    
  2. 複数レコードのデータをドメインクラスのListにマッピングする場合

    implements RowMapper<Book> {
      public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
        Book book = new Book();
        book.setId(rs.getInt("id");
        book.setIsbn(rs.getString("isbn");
        book.setName(rs.getString("name");
        return book;
      }
    }
    List<Book> bookList = jdbcTemplate.query("SELECT * FROM book", new myRowMapper());
    

3. ハンズオン実習

STEP04 ハンズオン

STEP04 実装イメージ

step04-flow

次のステップ

次のステップは「 STEP05 - Spring JDBC による書籍テーブル更新 」です。中盤戦です。