MyBatis は、SQLをアノテーションで書く方法と、XMLで書く方法の2つをサポートしています。どちらが良いかは好みが分かれるところでしょう。
ただ少なくとも、アノテーションは記述の自由度が低い(特に改行しにくい)ため、SQLが複雑になると悲惨なことになります。
Java アノテーション版
1 2 3 4 5 6 7 8 9 10 |
public interface CustomerMapper { @Select("SELECT" + " first_name," + " last_name" + " FROM customers" + " WHERE customer_id = #{customerId}" ) public Customer findCustomer(@Param("customerId") int customerId); } |
もうちょっと見やすくかければ…と考えていて、Groovy を思い出しました。
Groovy アノテーション版
1 2 3 4 5 6 7 8 9 10 11 |
interface CustomerMapper { @Select(''' SELECT first_name, last_name FROM customers WHERE customer_id = #{customerId} ''') Customer findCustomer(@Param("customerId") int customerId) } |
これなら文句なしです。インタフェースの Java ファイル1つだけで、データアクセス部品ができてしまうというのは、手軽で良いですね。