繁体   English   中英

在spring3,mybatis和mybatis-spring中使用MapperScannerConfigurer

[英]using MapperScannerConfigurer with spring3, mybatis, and mybatis-spring

在我的applicationContext.xml中,我有以下内容

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="formularyDb" />
    <property name="configLocation"  value="file:/web/sites/drugformulary-spring/config/mybatis-config.xml" />
    <property name="mapperLocations" value="file:/web/sites/drugformulary-spring/mappers/*.xml" />
    <!--<property name="mapperLocations" value="classpath*:org/myd/formulary/mappers/*.xml" />-->
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!--<property name="basePackage" value="org.myd.formulary.drugmaster.dao" />-->
    <property name="basePackage" value="org.myd.formulary.drugmaster" />
</bean>

如果我具有属性名称=“ basePackage” value =“ org.myd.formulary.drugmaster” ,则找不到我在org.myd.formulary.drugmaster.dao中的DAO(DrugMasterDao)我会得到*错误:

无效的绑定语句(未找到):

但是,如果我将其更改为property name =“ basePackage” value =“ org.myd.formulary.drugmaster.dao ,则会找到DrugMasterDao

我想将dao与它的控制器和服务放在同一包中。 所以我想知道如何在不同软件包中使用不同的dao来执行此操作(使用MapperScannerConfigurer)? 它们都将在org.myd.formulary下

您可能应该检查一下jpetstore代码结构的样子。 Mapper接口用于映射在xml配置中定义的sql语句,然后您可以简单地将自动创建的mapper bean注入或自动装配到DAO bean中。 可以说(假设映射器接口是MyMapper):

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="org.myd.formulary.drugmaster.persistence" />
</bean>

<bean id="myDAO" class="org.myd.formulary.drugmaster.dao.MyDAO">
    <property name="mapper" ref="myMapper" />
</bean>

这才是最终的工作

<bean id="drugmasterScanner"  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="org.myd.formulary.**.dao"/>
</bean>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM