一般的情况,大部分人会把sql.xml文件放在Resource 文件夹下,这样我们什么也不用配置,只需要在主启动类上加入注解@MapperScan(“com.xxx.mapper”)路径对应的是你的dao接口,这样就能加载到我们的sql文件.

在多模块的情况下,会出现mapper和xml映射不上的问题

下面提供在mapper接口和mapper.xml在任意路径,任意模块下,我们的项目该如何配置.
1.主启动类配置
在类名上加上如下注解

//  **代表任意路径不管有多少级,都能扫描到,在SpringbootApplication注解上加入这个,能将你所有的子模块中的类都加载到.
@SpringBootApplication(scanBasePackages = "com.xxx.**")
//全局扫描mapper文件夹(能扫描到所有子模块) mapper是dao接口的所在包名,以后必须创建的接口实现类的包名都叫mapper,由于个人习惯不同,有的人喜欢给dao的包名命名为mapper 有的喜欢命名为dao
@MapperScan(basePackages={"com.xxx.**.mapper","com.xxx.**.dao"})

2.application.properties文件配置

# 这里是告诉mybatis 扫描我们的xml文件的它会和上面的注解进行匹配
# classpath* 代表扫描全局,也就是所有的子模块,
# ** 代表中间不管有多少级目录,最终找到mapper,找到任意名称的xml文件
mybatis.mapper-locations: classpath*:com/xxx/**/mapper/*.xml

3.pom.xml (在父工程的xml文件里配置扫描xml的,这个虽然和第二步方式感觉很类似都是扫描xml文件的,但是这两个缺一不可,缺少一个,你的子模块的mapper都会映射不上)

<bulid>
	<resources>
		<resource>
			<directory>src/main/resources</directory>
		</resource>
		<resource>
			<directory>src/main/java</directory>
			<includes>
				<include>**/*.xml</include>
			</includes>
		</resource>
	</resources>
</bulid>
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐