2017-02-18 26 views
0

Я пишу свое приложение MyBatis в кулак, и я придерживался @Select. Я не знаю, в чем проблема с моим определением @Select, все кажется прекрасным, но я получил исключение Parameter not found.Передача параметра MyBatis @Select

Я выполнил тот же шаблон, когда передаю параметры своему моему оператору @Insert, и он работает без проблем.

Я использую MyBatis 3.4.2.

Это мой @Select:

@Select("SELECT * " 
     + "FROM configuration " 
     + "WHERE key_name = #{key} AND " 
     +  "(#{userId} IS NULL AND user_id IS NULL) OR user_id = #{userId} AND " 
     +  "status = 1") 
Configuration findByKeyAndUserId(String key, Long userId); 

Исключение, что я получил:

org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database. Cause: org.apache.ibatis.binding.BindingException: Parameter 'key' not found. Available parameters are [arg1, arg0, param1, param2] 
### Cause: org.apache.ibatis.binding.BindingException: Parameter 'key' not found. Available parameters are [arg1, arg0, param1, param2] 

ответ

0

При передаче одного объекта параметра, свойства доступны непосредственно через геттер или ключа для карты. Если вы хотите передать несколько параметров в методе, вы должны назвать параметры с аннотацией: синтаксис на основе

Configuration findByKeyAndUserId(@Param("key") String key, @Param("userId") Long userId); 

Это аннотацию на самом деле ведут себя как карта ключ-значение. Ключи предоставляются @Param. Имя, которое вы выбираете для переменных параметра, не отображается.

0

Пожалуйста, попробуйте -parameters вариант компиляции с JDK 8. Вы можете опустить аннотацию @Param.

См https://github.com/mybatis/mybatis-3/issues/549

Спасибо.

+0

Вы знаете, как настроить maven и intellij на использование «-параметров»? Я добавил -параметров в мой maven-компилятор-плагин, но нет никакого эффекта. Intellij: сборка, выполнение, развертывание> Компилятор> Компилятор Java> Дополнительные параметры командной строки, но это не работает. Возможно, мне нужно потратить больше времени на это :( – zappee

+0

Maven: См. Https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#compilerArgs. –

+0

IntelliJ: Вы правы! ! Тем не менее, вы должны быть перестроить свой проект (выполнить "Build> Rebuild Project") –

 Смежные вопросы

  • Нет связанных вопросов^_^