MyBatis! Передача нескольких параметров в Mapper DAO - PullRequest
3 голосов
/ 10 июня 2011

Я пытаюсь отправить несколько параметров в функцию Mapper, определенную в реализации DAO, но не могу отправить более 1 параметра в случае, когда параметр не является владельцем какого-либо класса.Я имею в виду, как я могу изменить следующий код:

obj.getName(int a, int b);

В реализации DAO

public void getAllName() throws PersistenceException {
        SqlSession session = sf.openSession();
        try {
            session.selectList("getNames");         
        } finally {
            session.close();
        }
    }

Я хочу отправить a и b для запроса getNames.

Заранее спасибо.

Ответы [ 2 ]

13 голосов
/ 11 июня 2011

Использовать Mapper.

interface Mapper
{
     @Select( " select names from names_table where a = #{fieldA} and b = #{fieldB}" )
     List<String> getNames(  @Param("fieldA") String fieldA, @Param("fieldB") String fieldB)
}

Тег @Param позволяет вам указать, что вы можете использовать для доступа к параметру в карте sql.В этом примере показан тег @Select, но он работает так же, как и xml.

, затем измените код,

public List<String> getAllName() throws PersistenceException {
        SqlSession session = sf.openSession();
        try 
        {
             Mapper mapper = session.getMapper(Mapper.class);
            return mapper.getNames("a","b");
        } finally {
            session.close();
        }
    }

Прочтите руководство пользователя для получения дополнительной информации.

4 голосов
/ 30 июня 2011

Если вы используете реализацию DAO, вы можете сделать это, используя HashMap. Просто добавьте пару ключ-значение в HashMap и добавьте ее в вызов функции, и вы можете получить к ней доступ в mapper.xml, используя «ключ».

...