在我的 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下
答案 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>