【メモ】MyBatisのMapperでオーバーロードをしてはいけない
MyBatisで
public interface UserMapper { @Select("SELECT * FROM users") List<User> getUsers(); @Select("SELECT * FROM users WHERE category_id = #{categoryId}") List<User> getUsers(@Param("categoryId") Integer categoryId); }
と定義してビルドする。
と、以下のように怒られる😇
java.lang.IllegalArgumentException: Mapped Statements collection already contains value for jp.co.hoge.core.mapper.UserMapper.getUsers
これは、interface内でメソッド名を一意にすると解決します😙
public interface UserMapper { @Select("SELECT * FROM users") List<User> getUsers(); @Select("SELECT * FROM users WHERE category_id = #{categoryId}") List<User> getUsersByCategoryId(@Param("categoryId") Integer categoryId); }