Синтаксическая ошибка в или около «$3» возникает при использовании оператора mybatis

#java #spring #postgresql #mybatis

Вопрос:

У меня возникли проблемы с моим кодом, использующим foreach в mybatis, и он продолжает замечать, что синтаксическая ошибка возникает около «$3», которую я никогда не использовал в запросе.

Я попытался изменить тип параметра

  1. из списка массивов в список,
  2. из ArrayListlt;Объектgt; в ArrayListlt;Объектgt;lt;Строкаgt;.

Версия mybatis-3.0, а база данных-postgres.

вот мой вопрос.

 lt;XML filegt; lt;mapper namespace="some.namespace.service.impl.SomeServiceImpl"gt; lt;select id="someId" parameterType="someCVO" resultType="someVO"gt;  ...  where date_column gt;= date #{startDate} and  date_column amp;lt; date #{endDate}   integer '1' and  lt;foreach collection="menu" item="item" index="index" separator="or" open="(" close=")"gt;  column = #{item}  lt;/foreachgt; lt;/selectgt;  

И это сообщение об ошибке:

Cause: org.postgresql.util.PSQLException: ERROR: syntax error at or near "$3"; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: ERROR: syntax error at or near "$3"

Комментарии:

1. item="item index="index" ты упускаешь " что-то там

2. $3 Это заполнитель параметра в сгенерированном операторе SQL, означающий, что что-то не так с преобразованием вашего оператора mybatis в SQL.

3. Я думаю, что это может относиться к части foreach, которая обрабатывает третье значение. 1=Дата начала, 2=дата окончания, 3=товар. «Плохая грамматика SQL []» может указывать на то, что коллекция меню пуста.

4. извините, пропущено » после элемента в запросе была опечатка. я отредактировал это, спасибо.

5. @Psymonkey Вы должны проверить фактический SQL, включив ведение журнала уровня ОТЛАДКИ. Если вам нужна дополнительная помощь, пожалуйста, добавьте в вопрос зарегистрированный SQL.