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 を用意する必要がないのであれば、この方が簡単だ。