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でやる場合は?
ていうか、出来るのか?
出来ないような気がする…。

この記事を書いた人

井上 研一

経済産業省推進資格ITコーディネータ/ITエンジニア/ブロガー。
井上研一事務所代表、株式会社ビビンコ代表取締役、一般社団法人ITC-Pro東京理事。
北九州市出身、横浜市在住。 AIやIoTに強いITコーディネータとして活動中。著書に「初めてのWatson」、「ワトソンで体感する人工知能」など。セミナーや研修講師での登壇も多数。

この記事が気に入ったら
いいね!しよう

最新の情報をお届けします