簡體   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