kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

S2Dao テーブル結合してデータ取得する方法

S2Daoにて、複数テーブルを結合して、データ取得する方法をメモしておきます。ネット上の情報を見ればわかる話ですが、自分なりに気になったポイントを記述しておきます。

いくつもやり方があるようです。まずSQL文ですが、Sqlアノテーションで記述する方法と、sqlファイルを用意する方法があります(他にもあるかも)。データベースから取得した値を保持する方法は、既存のエンティティクラスを使用する方法と、別途Dtoクラスを作成する方法があります(これも何とでもやり方がありそう)。私は、お手軽に作成するため、Sqlアノテーションと、既存エンティティクラスにデータ追加する方法を試しました。

概要

  1. Daoクラスのselect用メソッドのSqlアノテーションで、必要なテーブルをjoinし、必要なカラムを取得します。取得したカラムにはユニークな名前を付けておきます。
  2. エンティティクラスに、上記で取得したカラムに対応するプロパティを追加します。プロパティ名は上記で付けたユニークな名前と同一にします。

詳細

Daoクラス。テーブル結合してproject.nameを取得するようにしました。このカラムにユニークな名前"projectName"を付けました。

	@Sql("select document.*, project.name as projectName from document join project on document.project_id = project.id order by project.name, name")
	public Document[] selectAll();

Documentエンティティクラス。上記で付けたユニークな名前"projectName"と同一のプロパティを追加しました。

	public String projectName;

動作確認環境