/ / Idea inspeciona errado o bean do mapeador de batis - java, spring, intellij-idea, mybatis, inspection

Ideia inspeciona errado o bean mapper de batis - java, primavera, intellij-idea, mybatis, inspeção

Há um projeto web com Spring e MyBatis. Eu uso o IntelliJ IDEA para desenvolvimento. A IDEA não pode inspecionar corretamente os beans MyBatis e produz underscorings irritantes, embora o link para o Data Access Object esteja presente.

Comentário de inspeção:

 Could not autowire. No beans of "ApplicationMapper" type found.

Configurações My Spring e MyBatis: Primavera:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:spring/mybatis-config.xml"/>

</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.db.gbs.gbsapps.rds.backend.model.integration.mapping"/>
</bean>

mybatis-config.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>
<mappers>
<mapper resource="mybatis/ApplicationMapper.xml"/>
</mappers>
</configuration>

Existe uma maneira de corrigir esse pequeno problema?

Respostas:

5 para resposta № 1
@Repository
@Mapper
public interface ApplicationMapper {

vai fazer o truque


3 para resposta № 2

O plugin MyBatis atualizado é fixo e não tem esse problema.


3 para resposta № 3

Eu tenho o mesmo problema. No meu erro de inspeção Intelli J,

Não foi possível autowire. Nenhum tipo de "ApplicationMapper" encontrado. menos ... (Ctrl + F1) Verifica problemas de autowiring em uma classe de bean.

no meu caso, inspeções desativadas. (Alt + Enter correção rápida ou alterar as configurações)

Configurações - Editor - Inspeções - Spring - Spring Core - Código - Autowiring for Bean Class - disable

(Atualização 2015.04.27) Após o plugin myBatis instalado, eu resolvi este problema também


3 para resposta № 4

Outra maneira é adicionar @Component ou @Repository para sua interface de mapeamento.

Tal como:

@Repository
public interface ApplicationMapper {
//...
}

0 para a resposta № 5

Que tal definir uma nova anotação por conveniência:

@Repository
@Mapper
public @interface MyMapper{

}

@MyMapper
public interface ApplicationMapper {
//...
}

0 para a resposta № 6

No meu caso, a dose do plugin myBatis não funciona. Adicionando o seguinte antes da declaração da variável irá funcionar.

@Autowired
@SuppressWarnings("SpringJavaAutowiringInspection")
private ApplicationMapper applicationMapper;@Autowired