使用MapperScannerConfigurer与spring3,mybatis和mybatis-spring

时间:2013-12-13 17:12:12

标签: spring mybatis

在我的 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>

如果我有 property name =“basePackage”value =“org.myd.formulary.drugmaster” ,我的DAO(DrugMasterDao)在org.myd.formulary.drugmaster.dao中找不到我得到*错误:

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

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

我想将我的dao与其控制器和服务放在相同的包中。所以我想知道我如何在不同的包中使用不同的dao来做这个(使用MapperScannerConfigurer)?他们将全部在org.myd.formulary下

2 个答案:

答案 0 :(得分:0)

您应该查看jpetstore代码结构的外观。 Mapper接口用于映射xml配置中定义的sql语句,然后您可以简单地将自动创建的映射器bean注入或自动装入DAO bean。让我们说(假设mapper接口是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>

答案 1 :(得分:0)

这是最终起作用的

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