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!

コメントを残す