comment 0

iBATISについて考えてみる(追補)

1つ前に書いた記事で、「あんた、そりゃ話が上手すぎるよ」と、もう1人の自分がツッコミを入れました。
その、もう1人の自分の言い分は、「Header-Detailがさも出来るように書いてあるけど、どうやってやるんだ!」とのことでした。

確かにそうです。
Header-Detailは、一般的に1:nの関係にあります。
1:1なら、requestMapの方法で良さそう。
じゃぁ、1:nは、どうすれば良いのでしょうか。

SQLライクに考えると、JOINで持ってくるとHeaderもDetailも1つのレコードに入りますから、多い方のDetailの個数分だけレコードが返ってくるわけです。
JOINしなければ、最初にHeader側の1つを取って、その後で外部KEYを使ってDetail側の複数個を取れば良いのです。

2回SQLを投げるなら…
requestMapエレメントの子であるresultエレメントに、selectアトリビュートを書くという手があります。
この場合、2回目のSQLは1:nのn側を取ってくるので、その結果はListに詰めてやってきたりします。
良い感じです。

JOINでやる場合は?
ていうか、出来るのか?
出来ないような気がする…。

Follow me!

Filed under: ブログ

About the Author

Posted by

経済産業省推進資格ITコーディネータ/ITエンジニア。井上研一事務所代表、株式会社ビビンコ代表取締役。北九州市出身、横浜市在住。 2000年よりプログラマ・SEとして企業の業務システム開発に従事し、2012年に独立。AIやIoTに強いITコーディネータとしても活動中。著書に「初めてのWatson」、「ワトソンで体感する人工知能」など。セミナーや研修講師での登壇も多数。

コメントを残す