Mybatis-spring permite que você injete maperes em feijões de serviço. Ao usar um mapeador, não há problema em chamar o mapeador como ligar para o DAO, mas neste momento você não precisa codificar nenhuma implementação do DAO, porque o mybatis fará isso por você.
Com o mapeador injetado, seu código não terá dependências mybatis-spring e dependências mybatis. Existe um mapeador tão simples em nosso aplicativo. Você também deve saber que o mapeador é apenas uma interface:
interface pública UserMApper {user getUser (string userID); }É assim que você usa Mybatis-Spring para criar mapeadores:
<bean id = "userMApper"> <propriedade name = "sqlSessionFactory" ref = "sqlSessionFactory" /> <Nome da propriedade = "MapperInterface" value = "sample.userMApper" /> </i bean>
Agora seu mapeador está pronto para injetar no objeto de serviço:
<bean id = "fooservice"> <nome da propriedade = "userMApper" ref = "userMApper"/> </i bean>
Nota: O nome completo da classe da interface do mapeador corresponde ao espaço para nome do arquivo de configuração do Mapper XML.
Sobre o MapperFactoryBean
A classe Proxy criada pelo MapperFactoryBean implementa a interface do mapeador (como no exemplo acima: UserMApper) e é injetado no aplicativo. Como o agente é criado no ambiente de execução, o mapeador especificado deve ser uma interface. Em vez de uma classe de implementação concreta.
Não há necessidade de registrar todos os mapeadores no arquivo de configuração XML da Spring. Em vez disso, você pode usar um MapperScannerConfigurer, que procurará Mappers sob o ClassPath e os criará automaticamente no MapperFactoryBeans. Para criar um MapperScannerConfigurer, você pode adicionar o seguinte código à configuração da Spring:
<Bean> <Propery Name = "BasEpackage" Value = "Org.mybatis.spring.sample.mapper"/> </bean>
A propriedade BasePackage permite definir o caminho básico do pacote para o arquivo de interface do mapeador. Você pode definir mais de um caminho de pacote usando um ponto de vírgula ou vírgula como separador. Cada mapeador será pesquisado recursivamente no caminho do pacote especificado.
Observe que não há necessidade de especificar SQLSessionFactory ou SQLSessionTemplate, porque o MapperScannerConfigurer criará um MapperFactoryBean e depois a montará automaticamente. No entanto, se você usar mais de um conjunto de dados (e, portanto, múltiplo SQLSessionFactory), a montagem automática poderá falhar. Nesse caso, você pode usar a propriedade SQLSessionFactory ou SQLSessionTemplate para definir o modelo/modelo correto de fábrica.
O MapperScannerConfigurer suporta filtragem para criar mapeadores por interfaces ou anotações de criação especificadas. A propriedade AnoTationClass especifica o nome da anotação a ser pesquisado. A propriedade MarkerInterface especifica a interface pai a ser pesquisada. Se ambos forem especificados, o mapeador adicionado à interface corresponde a ambos os critérios. Por padrão, ambas as propriedades são nulas; portanto, todas as interfaces fornecidas no pacote base podem ser carregadas como maperes.
O mapeador descoberto será nomeado usando a política de nomeação padrão do Spring para o componente de detecção automática. Ou seja, se nenhuma anotação for encontrada, ele usa o nome de classe não-friamente qualificado do Mapper. Mas se você encontrar o @Component ou JSR-330 @nomeado anotação, ele receberá o nome.