ssm整合框架是关于mapper.xml和mapper.class自动映射出错之包名建立路径错误

mapper.xml和mapper.class所在的包名一致时,mapperLocations是不需要配置的如下:

 

<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.gnnu.oa.entity"/>

    //当mapper.xml和maper接口在同一包名下是无需配置mapperLocations
        <!--<property name="mapperLocations"  value="classpath:/com.gnnu.oa.dao/DepartmentDao.xml"/>-->
    </bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
        <property name="basePackage" value="com.gnnu.oa.dao"/>
</bean>

 

 然而今天开发发现mapper.xml和mapper.class所在的包名一致,然后在target中发现他们并不在一个包中如下:

ssm整合框架是关于mapper.xml和mapper.class自动映射出错之包名建立路径错误

ssm整合框架是关于mapper.xml和mapper.class自动映射出错之包名建立路径错误

 

然后经过一上午的查找发现原来是在resource文件下建包,不可以直接像如下建包

ssm整合框架是关于mapper.xml和mapper.class自动映射出错之包名建立路径错误

这样建好的包其实和我们java接口的包不是同一个,只是名字一样而已,所以terget自然不会把mapper.xml和mapper接口放一起,自然就无法实现自动映射功能了。

那么需要在resource中如何建包才能实现包名相同自动映射呢?

 

来了来了重点!!!划重点!!

原来只需这样建包

ssm整合框架是关于mapper.xml和mapper.class自动映射出错之包名建立路径错误

注意两个写法是完全不同的,得出的结果也完全不同,第二种写法才是引用我们的mapper接口包!

希望大家不要和我犯一样的错误。