2011-12-15 3 views
1

Интересно, возможно ли передать два или более параметров в метод вставки mybatis SqlSession, не создавая для этого новый класс. Я знаю, что resultType = "hashmap" может использоваться для возврата данных из select, но как насчет передачи данных? Также просто удивляйтесь, почему бы не использовать varargs для метода insert для нескольких параметров.Как передать 2 или более параметров в метод вставки или обновления SqlSession без создания класса?

Спасибо заранее REMIS B

ответ

6

Существует несколько различных подходов.

Mapper

Если вы используете класс Mapper, который я рекомендовал бы, вы могли бы сделать что-то вроде этого.

interface Mapper 
{ 
    void insertSomeObject(@Param("a") Integer a, @Param("b") Integer b); 
} 

Затем в XML Mapper вы можете использовать #{a} и #{b} ссылаться на ваши параметры.

HashMap

Вы можете обернуть параметры в HashMap.

HashMap map = new HashMap(); 
map.put("a", 1); 
map.put("b", 2); 

Затем передайте карту хэша в SQL-сессию и используйте значение ключа для задания параметров.

session.insert("myInsertStatment", map); 

Любая коллекция

Я не уверен в ваших точных потребностей, но если у вас есть произвольное количество целых чисел, чтобы перейти к утверждению вставки, просто передать список, или любой коллекции.

interface Mapper 
    { 
     void insertSomeObject(@Param("integers") Collection<Integer> integers); 
    } 

Затем в вашем xml вы можете использовать для каждого для создания динамического xml в соответствии с вашими потребностями.

<foreach collection="integers" item="integer" open="(" close=")" separator=","> 
    #{integer} 
</foreach> 
+0

Спасибо, что очень помогает. Если я прав, это не упоминается в документации. Вероятно, я должен был взглянуть на источник. :). Еще раз спасибо. –