LoginSignup
12
11

More than 5 years have passed since last update.

MyBatisを使った実装(テーブルをJOINして返却)

Posted at

昨日の続き。

2テーブルをJOINして返却する実装を行う。

流れ

  • 2テーブルを結合した受け口になるEntityクラスを作る
  • DBとJavaを繋ぐMapperクラス(interface)を作る
  • SQLの実装を書くMapperファイル(XML)を作る

感想としては、、、XMLがミスっていると実行時にエラーとなるので問題を見つけるのが大変。
特に返却値を定義する<resultMap>の書き方は、MyBatisのドキュメントを見つつ作成したけど、生産性良くない。
記法を覚えたので、今後は良くなるかな?
JOINした結果を、それぞれオブジェクトに分けるには<collection>タグを使用(集合になる場合は要素にjavaType="ArrayList"入れてね)。

ハマった点

現象:実行時、Mapperクラスで[NoSuchBeanDefinitionException]
原因:Mapper.xmlを手作成する時、自動作成した物を元にしたので<select>タグ内の返却値型の定義<resultType>を使っていた
解決策:<resultType>⇒<resultMap>に変更

現象:xmlのwhere句で、CheckStyleエラー「要素のコンテンツは、整形式の文字データまたはマークアップから成るものでなければなりません」
原因:「hoge <= #{hoge}」のように「<」を使っていた(コンパイラにタグだと思われた)
解決策:<![CDATA[]]>でwhere句を囲む

(参照:http://www.taosoftware.co.jp/blog/2006/03/ibatissqlmap.html)

<where>
    <![CDATA[
    AND from <= #{hoge}
    AND to >= #{hoge}
    ]]>
</where>
12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11