前言
当我们在开发过程中,由于maven项目本身的限制,我们不能直接把我们的mapper.xml文件和对应mapper.java接口文件放到一起,也就是不能直接放在java包中,如图:
因为maven项目在构建打包时,会从src/main/java中获取所有的java文件然后编译,会从src/main/resources中获取配置文件等其它文件,然后打包,
所以尽管你在Spring整合Mybatis时配置也好,在Mybatis单独的配置文件中配置也好,都是会出错的:
<!--配置SqlSessionFactory工厂--><bean id="sqlSessonFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!-- 扫描sql配置文件:mapper需要的xml文件 --><property name="mapperLocations" value="classpath*:com/ssm/mapper/mapping/*.xml" /></bean><!--配置mapper接口所在包--><bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.ssm.mapper"/></bean>
都是不会成功的!
因为在idea中,默认情况下是不会去编译src/main/java下的xml文件的!!!
方法:
这个时候你可以改变一下maven在打包时的配置就可以实现了:
在pom.xml文件中添加配置:
<!--插件配置--><build><resources><resource><directory>src/main/java</directory><!--包含了src/main/java目录下的所有xml资源配置文件--><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><includes><!--包含了src/main/resources目录下的所有资源配置文件,有别的格式的配置文件时,不要写成**/*.xml--><include>**/*</include></includes><filtering>false</filtering></resource></resources></build>
这个时候你就可以成功配置了!