1.S2Dao update文
スポンサード リンク
今回はS2Daoのupdate文の自動生成について記載したいと思います。
insert文のときにも記載しましたが、update文の自動生成
も簡単に行うことができます。
update文を自動生成するためには、メソッドをupdateから始めるだけで
生成することができます。
でわさっそくサンプルを記載してみたいと思います。
ProjectDao.java
package snowhiro; import java.util.List; import org.seasar.dao.annotation.tiger.Arguments; import org.seasar.dao.annotation.tiger.Query; import org.seasar.dao.annotation.tiger.S2Dao; import org.seasar.dao.annotation.tiger.SqlFile; /** * Dao用のサンプルファイル。 * * */ // Beanとのマッピングを記載します。 @S2Dao(bean = Project.class) public interface ProjectDao { // 全件検索用メソッド @Query("ORDER BY ID") public List<Project> selectProject(); /** * projectを更新する. * */ public int updateProject(Project pj); }
実際に記載した内容はたったの1行だけです。
戻り値にint型にした場合には、更新されたレコード数がセットされます。
次に対象のメソッドを呼び出すクラスは以下のようになります。
S2Dao_sample10.java
package snowhiro; import java.util.List; import java.util.Map; import org.seasar.framework.container.S2Container; import org.seasar.framework.container.factory.SingletonS2ContainerFactory; /** * S2Daoのサンプルメインクラス */ public class S2Dao_sample10 { // 設定ファイルのPath private static final String PATH = "snowhiro/s2Dao.dicon"; /** * メインクラス * @param args 引数 */ public static void main(String[] args) { System.out.println("S2Dao_sample10 開始"); // 設定ファイルを読み込む. SingletonS2ContainerFactory.setConfigPath(PATH); // 初期化する. SingletonS2ContainerFactory.init(); // コンテナを取得する. S2Container container = SingletonS2ContainerFactory.getContainer(); ProjectDao pjDao = (ProjectDao) container.getComponent(ProjectDao.class); // 登録前の確認 List<Project> list = pjDao.selectProject(); System.out.println("登録前の全件表示 "); for (Project project : list) { System.out.print(" project.id : " + project.id); System.out.println(" project.name : " + project.name); } Project pj = new Project(); pj.id = 5; pj.name = "プロジェクト名の更新後"; pjDao.updateProject(pj); List<Project> listAfter = pjDao.selectProject(); System.out.println("登録後の全件表示 "); for (Project project : listAfter) { System.out.print(" project.id : " + project.id); System.out.println(" project.name : " + project.name); } } }
呼び出すクラスでは、Projectのテーブルに対応しているBeanのProjectを生成し、そこに値をセットしています。 では早速サンプルのメインクラスを実行してみたいと思います。
S2Dao_sample10 開始 DEBUG S2Containerを作成します。path=snowhiro/s2Dao.dicon DEBUG S2Containerを作成します。path=dao.dicon DEBUG S2Containerを作成します。path=j2ee.dicon DEBUG S2Containerを作成します。path=jta.dicon DEBUG S2Containerを作成しました。path=jta.dicon DEBUG S2Containerを作成します。path=jdbc.dicon DEBUG S2Containerを作成しました。path=jdbc.dicon DEBUG S2Containerを作成しました。path=j2ee.dicon DEBUG S2Containerを作成しました。path=dao.dicon DEBUG S2Containerを作成しました。path=snowhiro/s2Dao.dicon INFO Running on [ENV]product, [DEPLOY MODE]Normal Mode DEBUG トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1220440380406/0, BranchId=] DEBUG 物理的なコネクションを取得しました DEBUG 論理的なコネクションを取得しました。tx=[FormatId=4360, GlobalId=1220440380406/0, BranchId=] DEBUG 論理的なコネクションを閉じました。tx=[FormatId=4360, GlobalId=1220440380406/0, BranchId=] DEBUG 論理的なコネクションを取得しました。tx=[FormatId=4360, GlobalId=1220440380406/0, BranchId=] DEBUG 論理的なコネクションを閉じました。tx=[FormatId=4360, GlobalId=1220440380406/0, BranchId=] DEBUG 論理的なコネクションを取得しました。tx=[FormatId=4360, GlobalId=1220440380406/0, BranchId=] DEBUG SELECT PROJECT.id, PROJECT.PJNAME FROM PROJECT ORDER BY ID DEBUG 論理的なコネクションを閉じました。tx=[FormatId=4360, GlobalId=1220440380406/0, BranchId=] DEBUG トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1220440380406/0, BranchId=] 登録前の全件表示 project.id : 1 project.name : S2Dao project.id : 2 project.name : S2プロジェクト 入門 project.id : 3 project.name : S2Dao_SELECT句の説明 project.id : 4 project.name : S2DaoでselectのWhere句を追加する project.id : 5 project.name : 自動生成用 DEBUG トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1220440380406/1, BranchId=] DEBUG 論理的なコネクションを取得しました。tx=[FormatId=4360, GlobalId=1220440380406/1, BranchId=] DEBUG UPDATE PROJECT SET PJNAME = 'プロジェクト名の更新後' WHERE id = 5 DEBUG 論理的なコネクションを閉じました。tx=[FormatId=4360, GlobalId=1220440380406/1, BranchId=] DEBUG トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1220440380406/1, BranchId=] DEBUG トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1220440380406/2, BranchId=] DEBUG 論理的なコネクションを取得しました。tx=[FormatId=4360, GlobalId=1220440380406/2, BranchId=] DEBUG SELECT PROJECT.id, PROJECT.PJNAME FROM PROJECT ORDER BY ID DEBUG 論理的なコネクションを閉じました。tx=[FormatId=4360, GlobalId=1220440380406/2, BranchId=] DEBUG トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1220440380406/2, BranchId=] 登録後の全件表示 project.id : 1 project.name : S2Dao project.id : 2 project.name : S2プロジェクト 入門 project.id : 3 project.name : S2Dao_SELECT句の説明 project.id : 4 project.name : S2DaoでselectのWhere句を追加する project.id : 5 project.name : プロジェクト名の更新後
「UPDATE PROJECT SET PJNAME = 'プロジェクト名の更新後' WHERE id = 5」のSQLが自動的に生成されて発行されています。
更新前のプロジェクト名は「自動生成用」となっていますが、実行後には「プロジェクト名の更新後」となっています。
またこのときwhere句は主キーの物が設定されています。
Seasar2 Topに戻る