mybatis SQLアノテーションでMap を使うケース

mybatis アノテーションSQLで実行する場合、インターフェースに記述するメソッドの引数に、
Map を指定できるケースがある。(今さらだけど、忘れないために・・・)

必要なこと。。。
 Map の Key とアノテーションSQLで記述するパラメータ #{ } or ${ }
 囲む参照文字列が同一であること。
ポイントは、、、
 Map の総称型は、汎用性を持たせるために、Map<String,Object> が良いこと。


例えば、、、

public interface ItemMapper{
   @Select("SELECT name,price FROM t_items WHERE salesDate >= #{beginDate} AND price <= #{price}")
   public List<Item> getItems(Map<String,Object> map);
}

とあるなら、

Date beginDate;
// beginDate インスタンス生成

Map<String,Object> map = new HashMap<String,Object>();
map.put("beginDate",beginDate);
map.put("price",1000);

SqlSession session;
   // SqlSession を生成してから、、
List<Item> list = session.getMapper(ItemMapper.class).getItems(map);

単純なケースで、アノテーションSQLの為に Bean を用意する必要がないのであれば、この方が簡単だ。