Использование @Select для данных запроса, но получено «Недопустимый связанный оператор (не найден)» - PullRequest
1 голос
/ 24 июня 2019

У меня есть проект с использованием весны + mybatis.Я хочу использовать @Select для запроса данных, но получил журнал ошибок типа «Недопустимый связанный оператор (не найден)».

Я нашел статью на официальном китайском веб-сайте mybatis, в которой говорится, что я могу использовать данные запроса @Select.Как и в случае с mapper.xml.

Кто-нибудь может мне помочь?

Я искал много ответов в google, люди всегда говорили, что их xml или mapper настроены неправильно, но я неу меня нет картографических файлов: .xml или .java, поэтому я не знаю, что я сделал не так.

@Select("SELECT * FROM store_order WHERE id>#{lastId} AND order_add_status=#{status} ORDER BY id ASC LIMIT #{limit}")
List<StoreOrderData> queryStoreOrderDataListByStatus(@Param("status") int status, @Param("lastId") long lastId, @Param("limit") int limit);

Надеюсь, кто-нибудь подскажет, какой шаг я сделал неправильно?Может ли это произойти из-за конфигурации базы данных?

есть журнал ошибок:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.heshengbang.middleware.biz.store.dao.StoreOrderDao.queryStoreOrderDataListByStatus
    at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:189)
    at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:43)
    at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:58)
    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:51)
    at com.sun.proxy.$Proxy45.queryStoreOrderDataListByStatus(Unknown Source)

Ответы [ 3 ]

0 голосов
/ 24 июня 2019

Это сообщение об ошибке:

org.apache.ibatis.binding.BindingException: недопустимый связанный оператор (не найдено):

Это вызвано неправильным синтаксисом запроса, написанного по методу queryStoreOrderDataListByStatus, ошибка: id>#{lastId} change = вместо > , и это должно работать.

@Select("SELECT * FROM store_order WHERE id>#{lastId} AND order_add_status=#{status} ORDER BY id ASC LIMIT #{limit}")
List<StoreOrderData> queryStoreOrderDataListByStatus(@Param("status") int status, @Param("lastId") long lastId, @Param("limit") int limit);
0 голосов
/ 02 июля 2019

Я решил эту проблему несколько дней назад, это произошло из-за того, что в java-файлах есть две функции перегрузки, оба из которых названы «queryStoreOrderDataListByStatus», это приведет к тому, что mybatis не сможет найти нужную, поэтому проблема непредвиденная.

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

0 голосов
/ 24 июня 2019

Возможно, вам понадобится добавить @Results, чтобы настроить отображение имен столбцов в свойствах POJO в результате вашего запроса.Он должен быть размещен таким же способом, как @Select

Пример:

@Results({
    @Result(property = "id", column = "id"),
    @Result(property = "status", column = "order_add_status")
})
...