Я использую Spring with Mybatis. У меня он настроен на сканирование для mappers во всем моем проекте, и я предположил, что он определил mapper, потому что нашел XML-файл, который имеет ссылку на интерфейс java.Почему сканер Mapbisis набирает неправильный класс
Но это доказано неправильно сегодня, потому что я должен был добавить новый интерфейс, который не является классом картографа и Mybatis думает, что это, так что это вызывает проблемы в моем приложении из-за эту ошибку: сбор
Подключенных Заявлений не содержит значения для com.blah.MyInterface.someMethod
com.blah.MyInterface - это просто простой интерфейс, который мне нужно было включить в контекст Spring, поэтому я дал ему тег @Component. Это неправильный тег для использования? Это откуда происходит путаница?
Мне просто нужно было создать этот интерфейс, чтобы я мог прокси-сервер переносить мою базу данных в одном месте, где я могу поместить тэг @Transactional, поскольку Spring игнорирует его, когда он находится в моем методе контроллера.
Пример кода
package com.blah.something;
@Component public interface MyInterface {
public void someMethod(SomeObject obj) throws Exception;
}
package com.blah.something;
public class MyImplementation implements MyInterface {
@Transactional
public void someMethod(SomeObject obj) throws Exception {
... do a whole bunch of stuff
}
}
Я не хочу, чтобы это включено в MyBatis картографами!
Edit: добавлена mybatis конфигурационный XML в соответствии с просьбой:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="false" />
<setting name="defaultStatementTimeout" value="60"/>
</settings>
<typeAliases>
<typeAlias alias="StripTrailingZerosBigDecimalTypeHandler" type="com.blah.typehandlers.StripTrailingZerosBigDecimalTypeHandler"/>
</typeAliases>
</configuration>
Это часть моей яровой XML конфигурации, которая вызывает сканер mybatis сопоставителя:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.blah" />
</bean>
Так что я установить его для сканирования весь проект, который включает мой интерфейс выше, но я не могу себе представить, что он просто захватывает каждый отдельный интерфейс и рассматривает их всех картографов!
В моем журнале отладки я вижу mybatis собирание мой интерфейс:
12/9/13 11:18:44 904 [org.mybatis.spring.mapper.MapperScannerConfigurer$Scanner.findCandidateComponents:4125] - Scanning file [D:\Weblogic\wls11\domains\ldapdomain\autodeploy\default\WEB-INF\classes\com\blah\MyInterface.class]
12/9/13 11:18:44 904 [org.mybatis.spring.mapper.MapperScannerConfigurer$Scanner.findCandidateComponents:4125] - Identified candidate component class: file [D:\Weblogic\wls11\domains\ldapdomain\autodeploy\default\WEB-INF\classes\com\blah\MyInterface.class]
12/9/13 11:18:44 904 [org.mybatis.spring.mapper.MapperScannerConfigurer$Scanner.findCandidateComponents:4125] - Scanning file [D:\Weblogic\wls11\domains\ldapdomain\autodeploy\default\WEB-INF\classes\com\blah\MyImplementation .class]
12/9/13 11:18:44 904 [org.mybatis.spring.mapper.MapperScannerConfigurer$Scanner.findCandidateComponents:4125] - Ignored because not a concrete top-level class: file [D:\Weblogic\wls11\domains\ldapdomain\autodeploy\default\WEB-INF\classes\com\blah\MyImplementation .class]
Там нет XML для этого интерфейса, нет картографа имен для него, это просто обычный старый Привычный интерфейс и MyBatis не должны подумайте, что это услуга картографа
Есть ли какое-либо сопоставление коллекций в файлах xml-файлов mybatis? –
Не могли бы вы опубликовать конфигурацию вашего mybatis scaner? –
В mybatis config xml есть только запись о ленивых и таймаутах запросов, в нем нет спецификаций сопоставления – Trant