[Seasar-user:15747] Re: [S2Dao]select文の結果を任意のクラスに格納したい

大屋茂士将 [E-MAIL ADDRESS DELETED]
2008年 9月 12日 (金) 18:28:29 JST


中村(taedium)様

大屋です。お世話になっております。
ご回答ありがとうございます。

質問内容の例を簡単にし過ぎたのですが

public class A {
   public String id;
   public B b1;
   public B b2;
}

のような時に以下のような一回のSQLでデータを入れたいと思っておりました。

select  id , x as ` b1.c`,  y as `b2.c` from a 〜

中村(taedium)様が示された内容からすると一度のSQLで済ませるには、

1) 二度 selectX();を呼んでAを作る
2) もしくは別途クラスを

  public class ATemp {
     public String id
     public String b1_c;
     public String b2_c;
  }

の様に作り、Aへ移し変えるということになるでしょうか。

想定としては、Aクラスのデータをリストでもらうインタフェースも有り得るため、
その場合は2) を選択することになりそうです。


2008/09/12 17:13 Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>:
> 中村(taedium)です。
>
>> データベースアクセスにS2Daoを採用し、インタフェースのみのDAOと、SQLファイルを使って開発する予定です。
>> このような方式をとった場合、検索結果を任意のクラスに格納することは可能でしょうか?
>>
>> 例えば、Entityではないクラス以下のようなA・Bクラスと、
>> Daoがあり、
>>
>> public class A {
>> public B b;
>> }
>>
>> public class B{
>>     public String c;
>> }
>>
>> public interface ADao {
>>
>>        public A selectX();
>> }
>>
>> ADao_selectX.sql には
>>  select x as ` a.b.c` from a ~
>> のように書かれていた場合に、
>>
>>   A a = dao.selectX();
>>   String result = a.b.c ;
>>   ...
>>
>> このようにアクセスしたいと考えています。
>
> 挙げていただいた例では不可能ですが、
> 次のように結果をAクラスではなくBクラスで受け取るならば可能です。
> SQLの修正も必要です。
>
>  public class B{
>    public String c;
>  }
>
>  public interface ADao {
>    public B selectX();
>  }
>
> というクラスがあるとして、
> ADao_selectX.sqlに
>
>  select x as c from a
>
> とあれば
>
>  B b = dao.selectX();
>  String result = b.c ;
>
> と取得できます。
>
> --
> Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


-- 
大屋 茂士将


Seasar-user メーリングリストの案内