一: Mapper接口与映射文件在同一目录下
方式一:同一目录,位置不同
在Spring的核心配置文件中,配置了在指定包下批量扫描mapper映射文件:
<!-- 批量扫描mapper包,创建代理对象 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.lg.mapper"/>
<property name="sqlSessionFactoryBeanName" value="factory"/>
</bean>
如上所示,spring会扫描com.lg.mapper下的mapper映射文件生成代理对象,它默认扫描的是resources下的com.lg.mapper映射文件,所以你的mapper接口与映射文件要分开写,位置不同,但目录要一致,才能映射到,如:

方式二:同一目录,位置相同
效果图:

mapper接口与映射文件在同一包下,且在都在src/main/java下,
实现步骤:
在之前的指定扫描包的位置下,还需要在pom.xml配置中配置:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
二:mapper接口与映射文件目录不一致
效果图:

mapper接口的目录为com.lg.mapper。 mapper映射文件的目录位置为 resources:mapper/
配置方式:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">
<!-- 使用mybatis:scan 扫描包 -->
<mybatis:scan base-package="com.lg.mapper" />
<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置mapper文件位置,扫描映射文件-->
<property name="mapperLocations" value="classpath:mapper/*.xml"> </property>
//.....
</bean>
三: mapper映射文件的约束
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
</mapper>
本文详细介绍了SSM框架中Mybatis的映射文件存放路径注意事项。包括Mapper接口与映射文件在同一目录下的两种方式,以及映射文件与接口目录不一致的配置。在配置时,需确保Spring能正确扫描到映射文件,以实现正确的映射和代理对象生成。
655

被折叠的 条评论
为什么被折叠?



