MyBatis: Использование интерфейсов Mapper с XML Config для глобальных параметров
Вопрос
Мне нравится запись XML для указания глобальных параметров, таких как соединительные строки. Я также люблю аннотации Mapper. Когда я пытаюсь объединить два, я получаю Это исключение.
Есть ли способ объединить два? Я хотел бы использовать XML-файл для глобальных конфигураций, но принять во внимание MyBatis Mapper Interfaces.
Проблема заключается в том, что SQLSessionFactoryBuilder (). Build () требует либо читателя (который я хочу использовать для передачи конфигурации XML) или объекта конфигурации (который я вижу имеет addMappers()
Метод, который может помочь мне) - но я не понимаю, как объединить два.
Решение
factory.getConfiguration().addMapper(...);
Другие советы
Когда вы создаете интерфейс Mapper С абстрактными методами, имеющими точный метод подписи в качестве SQL в XML.
Например, Это было пространство имен для DAO.XML, который содержал фактический запрос.
<mapper namespace=" com.mybatis.dao.EntityMapperInterface">
<select id="selectEmployeeWithId" parameterType="Long"
resultType="com.mybatis.domain.Employee">
select id,name from employee where 1=1
<if test="_parameter != null">
AND id=#{id}
</if>
order by id
</select>
Это будет сопоставлено в Интерфейс com.mybatis.dao.entitymapperinterface.
public interface EntityMapperInterface {
public List<Employee> selectEmployeeWithId(Long id);
Mybatis-config file
<mappers>
<mapper resource="com/mybatis/mappers/EntityMapper.xml" />
</mappers>
Как вы называете это из класса действий / сервлета? Когда у вас есть инициализирована SQLSession,
EntityMapperInterface emi = session.getMapper(EntityMapperInterface.class);
List eList = emi.selectEmployeeWithId(1);
У меня была такая же проблема и была потому, что имя имени в файле MyBatis Mapper и пакет интерфейса Mapper не соответствует.