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中发现他们并不在一个包中如下:
然后经过一上午的查找发现原来是在resource文件下建包,不可以直接像如下建包
这样建好的包其实和我们java接口的包不是同一个,只是名字一样而已,所以terget自然不会把mapper.xml和mapper接口放一起,自然就无法实现自动映射功能了。
那么需要在resource中如何建包才能实现包名相同自动映射呢?
来了来了重点!!!划重点!!
原来只需这样建包
注意两个写法是完全不同的,得出的结果也完全不同,第二种写法才是引用我们的mapper接口包!
希望大家不要和我犯一样的错误。