Я пытаюсь реализовать интерфейс базового преобразователя:
public interface IDAOBase<T, ID> {
default List<T> findAll() {
throw new RuntimeException("Method not implemented !");
}
default T findById(ID id) {
throw new RuntimeException("Method not implemented !");
}
default ID insert(T t) {
throw new RuntimeException("Method not implemented !");
}
default T update(T t) {
throw new RuntimeException("Method not implemented !");
}
default void delete(ID id) {
throw new RuntimeException("Method not implemented !");
}
default T getRowById(ID id) {
throw new RuntimeException("Method not implemented !");
}
}
Это будет преобразователь, расширяющий базовый интерфейс:
@Mapper
interface UserMapper extends IDAOBase<UserVO, Long> {
UserVO findByUsername(String username);
// UserVO findById(Long id);
}
Я вызываю преобразователь следующим образом:
@Autowired
private UserMapper mapper;
public UserDetails loadUserById(Long id) {
return loadUser(mapper.findById(id));
}
Но я получаю исключение RuntimeException из метода по умолчанию:
java.lang.RuntimeException: Method not implemented !
at com.project.services.IDAOBase.findById(IDAOBase.java:8)
в xml У меня есть метод "findById":
<select id="findById"
resultType="UserVO">
<include refid="baseSelect"/>
where
k.id = #{id}
</select>
Также;когда я раскомментирую эту строку в интерфейсе mapper, она работает:
Это работает:
@Mapper
interface UserMapper extends IDAOBase<UserVO, Long> {
UserVO findByUsername(String username);
UserVO findById(Long id);
}
Это не работает:
@Mapper
interface UserMapper extends IDAOBase<UserVO, Long> {
UserVO findByUsername(String username);
// UserVO findById(Long id);
}
В чем здесь ошибка?