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コーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。