mybatis: использование интерфейсов сопоставления с XML-конфигурацией для глобальных параметров - PullRequest
12 голосов
/ 24 ноября 2010

Мне нравится нотация XML для указания глобальных параметров, таких как строки подключения.Мне также нравятся аннотации Mapper.Когда я пытаюсь объединить два, я получаю это исключение .

Есть ли способ объединить оба?Я хотел бы использовать XML-файл для глобальных конфигураций, но mybatis учитывает интерфейсы Mapper.

Проблема в том, что SqlSessionFactoryBuilder (). Build () использует либо Reader (который я хочу использовать дляпередать конфигурацию XML) или объект конфигурации (который, как я вижу, имеет метод addMappers(), который может мне помочь), - но я не понимаю, как объединить их.

Ответы [ 3 ]

9 голосов
/ 06 января 2011

factory.getConfiguration().addMapper(...);

6 голосов
/ 22 марта 2012

Когда вы создаете интерфейс 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

<mappers>
    <mapper resource="com/mybatis/mappers/EntityMapper.xml" />
</mappers>

Как вы называете это из класса / сервлета Action? Когда у вас инициализирована SqlSession,

EntityMapperInterface emi = session.getMapper(EntityMapperInterface.class);
List eList = emi.selectEmployeeWithId(1);
0 голосов
/ 14 декабря 2011

У меня была та же проблема, и это потому, что пространство имен в файле сопоставления mybatis и пакет интерфейса сопоставления не совпадали.

...