- PR -

iBATISでテーブルのカラム名を使わずにオブジェクトに格納する方法?

1
投稿者投稿内容
LostCat
会議室デビュー日: 2007/04/25
投稿数: 4
投稿日時: 2007-04-25 17:26
カラム名が可変なテーブルを扱い、
SELECT句で複数のカラムを指定しています。

カラム名を指定せずに何らかのオブジェクトに格納する方法を
教えていただけないでしょうか。
(resultMapはカラム名の指定が必要ですし)

よろしくお願い致します。

nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-04-25 17:31
SELECT * FROM HOGE
といったように列を未指定でオブジェクトに格納したいということですか?
そもそも列の定義順に依存するようなことは避けて列名を全て書いておく方が
リスクが少ないですから、通常は列名は省略しませんよね。
LostCat
会議室デビュー日: 2007/04/25
投稿数: 4
投稿日時: 2007-04-25 17:47
はい、列名は省略しません。
前もって、対象テーブルの列名を問い合わせておき、
SELECT句に書き込みます。(<iterate>タグを使用できるかなと思います。)

その後、取得したデータを何らかのオブジェクトに格納したいです。
(resultMapも変数を使えたりすればよいのですが。)

よろしくお願い致します。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-04-25 19:02
列名を省略したいわけではないことは分かりましたが…

SELECT文を動的に作ってその結果を何かのオブジェクトに入れたいって話なのでしょうか?
そもそもなんでそんなアプローチが必要なのか不可解ですが。
SQL文をmapファイルに外出しできることがO/Rマッピングのメリットのひとつでしょう?

抽象的にクエリを扱いたい前提でならSELECTの結果をMapに受け取ることが
できるはずなのでその辺を利用するとよいかもしれません。

こちらの公式ドキュメントの34ページあたりに書かれています。
http://ibatis.apache.org/docs/java/pdf/iBATIS-SqlMaps-2_en.pdf
LostCat
会議室デビュー日: 2007/04/25
投稿数: 4
投稿日時: 2007-04-26 10:43
変わった質問で申し訳ありません。

DBのテーブルが最初から用意されているのではなく
システムがテーブルを動的に作り出します。
もちろん、テーブル名・カラム名はルールに従って作成されます。

そういう理由で、列名・列数が可変でもどうにかオブジェクトに
取り込めないものかと悩んでいます。

よろしくお願い致します。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-04-26 11:57
背景事情はわかりました。
先の返答で解決策は提示済みです。
まずは試してみてください。
LostCat
会議室デビュー日: 2007/04/25
投稿数: 4
投稿日時: 2007-04-26 14:15
できました。この方法でいけそうです。

ありがとうございました。
感謝致します。
1

スキルアップ/キャリアアップ(JOB@IT)