Вопрос

Я не смог ничего увидеть в документации, которая говорит о моем вопросе, и после его развертывания мое приложение не совсем работает правильно (подробнее об этом в секунде). Я пытаюсь сделать что -то вроде

<select id="getLookupRows" parameterType="map" resultMap="lookupMap">
   select id, name, active, valid
   from #{table}
</select>

в Мибатисе. У меня есть несколько таблиц поиска, которые имеют общие столбцы, и поэтому пользователь на уровне просмотра определяет, какая таблица поиска в конечном итоге используется. Ошибка, которую я получаю, когда пытаюсь выполнить GetLookuprow

Cause: org.apache.ibatis.executor.ExecutorException: There was no TypeHandler found for parameter table of statement info.pureshasta.mapper.LookupMapper.getLookupRows
org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:77)
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:69)
org.apache.ibatis.binding.MapperMethod.executeForList(MapperMethod.java:85)
org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:65)
org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:38)
$Proxy15.getLookupRows(Unknown Source)
info.pureshasta.service.FieldTitleService.getLookupRows(FieldTitleService.java:33)

Мой интерфейс Mapper заключается в следующем:

List<Lookup> getLookupRows(@Param("specificColumn") String specificColumn, 
                           @Param("table") String table);

Итак, мы знаем, что я пытаюсь передать строку в этот запрос, ничего особенного. У меня есть конкретный столбец, потому что это будет моей следующей задачей. Действительно одна из столбцов каждой из таблиц поиска уникальна, и поэтому я должен назвать соответствующую конкретную коллекцию, но я был бы очень рад, если бы смог ли я параметр таблицы и изложено.

Это было полезно?

Решение

<select id="getLookupRows" parameterType="map" resultMap="lookupMap">
   select id, name, active, valid
   from ${table}
</select>

делает трюк. Существует другая нотация из фактического введения в значение для имени столбца и таблицы, тогда скажите значение столбца. Если вы вводите значение в предложении, где # нотация является правильной для использования.

Если значение, используемое для таблицы в этом запросе, не ускользается, то могут возникнуть проблемы с инъекцией SQL. Для моего варианта использования DB предшествовал мне, и хотя я могу делать все, что хочу, чтобы Java и просмотреть части, мне не разрешают изменять фундаментальные структуры таблиц.

Если кто -то хочет дополнительно объяснить трассировку стека, которую я получил (то есть какой был таблицу мысли MyBatis), я хотел бы прочитать и получить дальнейшее образование.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top