Конфигурация MyBatis XML и Spring

Я использую mybatis mappers (XML) и конфигурацию spring. Для запуска сегментов sql я установил vendorProperties, datasource и sqlSessionFactory (включая databaseIdProvider). Дополнительно предусмотрен databaseId = "oracle" в картографе. Картографы настраиваются в файле mybatis-config. Когда я запускаю службу, я вижу сообщение об ошибке, хотя пространство имен сопоставителя и идентификатор фрагмента SQL совпадают с именем.

"Invalid bound statement (not found):"

Конфигурация картографа:

<select id = "getNextId" resultType = "java.lang.Integer" databaseId = "db2"> SELECT NEXT VALUE FOR TBL1 FROM SYSIBM.SYSDUMMY1 </select> 
<select id = "getNextId" resultType = "java.lang.Integer" databaseId = "Oracle"> SELECT TBL1.NEXTVAL FROM DUAL </select>

AppContext.xml:

<bean id = "vendorProperties" class = "org.springframework.beans.factory.config.PropertiesFactoryBean"> 
  <property name = "properties"> 
    <props> 
      <prop key = "DB2">db2</prop> 
      <prop key = "Oracle">oracle</prop> 
      <prop key = "H2">h2</prop> 
      <prop key = "MySQL">mysql</prop> 
    </props> 
  </property> 
</bean> 
<bean id = "sqlSessionTemplate" class = "org.mybatis.spring.SqlSessionTemplate" destroy-method = "clearCache"> 
  <constructor-arg ref = "sqlSessionFactory"/> 
</bean>

Также AppContext.xml содержит bean-компонент databaseIdProvider:

<bean id = "databaseIdProvider" class = "org.apache.ibatis.mapping.VendorDatabaseIdProvider"> 
  <property name = "properties" ref = "vendorProperties"/> 
</bean> 
<bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean">
  <property name = "dataSource" ref = "dataSource"/> 
  <property name = "configLocation" value = "classpath:mappers/mybatis-config.xml"/>
  <property name = "databaseIdProvider" ref = "databaseIdProvider"/> 
</bean>

Может ли кто-нибудь помочь определить, почему я продолжаю получать ошибку «Недопустимый связанный оператор (не найден)» при анализе запроса, связанного с getNextId?

Приведите пример того, что вы сделали, чтобы пользователям было легче правильно ответить на ваш вопрос.

Mahib 08.05.2018 18:54

Конфигурация сопоставителя: <select id = "getNextId" resultType = "java.lang.Integer" databaseId = "db2"> ВЫБРАТЬ СЛЕДУЮЩЕЕ ЗНАЧЕНИЕ ДЛЯ TBL1 ИЗ SYSIBM.SYSDUMMY1 </select> <select id = "getNextId" resultType = "java. lang.Integer "databaseId = " Oracle "> ВЫБРАТЬ TBL1.NEXTVAL ИЗ ДВОЙНОГО </select>

kets42 08.05.2018 21:47

AppContext.xml: <bean id = "vendorProperties" class = "org.springframework.beans.factory.config.PropertiesFa‌ ctoryBean"> <property name = "properties"> <props> <prop key = "DB2"> db2 < / prop> <prop key = "Oracle"> oracle </prop> <prop key = "H2"> h2 </prop> <prop key = "MySQL"> mysql </prop> </props> </property> </bean> <bean id = "sqlSessionTemplate" class = "org.mybatis.spring.SqlSessionTemplate" destroy-method = "clearCache"> <constructor-arg ref = "sqlSessionFactory" /> </bean>

kets42 08.05.2018 21:48

Также AppContext.xml содержит bean-компонент databaseIdProvider: <bean id = "databaseIdProvider" class = "org.apache.ibatis.mapping.VendorDatabaseIdProvider"> <property name = "properties" ref = "vendorProperties" /> </bean> <bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean"> <property name = "dataSource" ref = "dataSource" /> <property name = "configLocation" value = "classpath: mappers / mybatis-config.xml" /> <property name = "databaseIdProvider" ref = "databaseIdProvider" /> </bean>

kets42 08.05.2018 21:52

Может ли кто-нибудь помочь определить, почему я продолжаю получать ошибку «Недопустимый связанный оператор (не найден)» при анализе запроса, связанного с getNextId?

kets42 08.05.2018 21:55

Моя версия mybatis-spring - 1.2.1, а версия mybatis - 3.2.3 на случай, если это будет полезно.

kets42 08.05.2018 22:12

добавляйте существенные детали к самому вопросу, а не к комментариям

Roman Konoval 08.05.2018 23:08
0
7
802
0

Другие вопросы по теме