在 Spring Boot + MyBatis - Plus 項目中,entity
(實體類)和 XML 映射文件的查找機制有其默認規則,也可通過配置調整,以下詳細說明:
一、實體類(entity)的查找
MyBatis - Plus 能找到實體類,主要基于以下默認規則:
- 包掃描:
在項目啟動類上,一般會有?@MapperScan
?注解,例如?@MapperScan("com.neuedu.hisweb.mapper")
?,它的作用是掃描指定包下的 Mapper 接口。同時,MyBatis - Plus 會根據 Mapper 接口中定義的泛型(如?BaseMapper<User>
?里的?User
?),去對應的包路徑(通常是與 Mapper 接口有合理包層級關聯,或者通過?@Entity
、@TableName
?等注解配合)中查找實體類。只要實體類的包路徑能被合理掃描到(項目的包結構符合 Spring Boot 組件掃描的默認規則,即啟動類所在包為基礎,掃描其下級包),就可以找到。
比如你的項目啟動類在?com.neuedu.hisweb
?包下,那么?com.neuedu.hisweb.entity
?包下的實體類,會被自動掃描識別,因為 Spring Boot 默認會掃描啟動類所在包及其子包下的組件。 - 注解輔助:
實體類上的?@TableName
?注解,用于指定該實體類對應的數據庫表名,這也幫助 MyBatis - Plus 建立實體類和數據庫表的映射關系,在操作數據庫時能正確關聯。
所以,實體類只要在合理的包路徑下(能被 Spring Boot 組件掃描到),無需額外配置就能被找到?,MyBatis - Plus 會基于 Mapper 接口泛型和包掃描機制定位到它們。
二、XML 映射文件的查找(分兩種情況)
情況 1:使用 MyBatis - Plus 且主要用其自帶 CRUD ,少用自定義 XML
如果項目中主要使用 MyBatis - Plus 提供的?BaseMapper
?自帶的 CRUD 方法(如?insert
、selectById
?等 ),基本不用自己寫 XML 映射文件,此時不需要額外配置 XML 路徑,MyBatis - Plus 內部機制可正常工作。
情況 2:有自定義 XML 映射文件(如寫復雜 SQL )
若有自定義的 XML 映射文件(比如放在?src/main/resources/mapper
?目錄,或者和 Mapper 接口同一目錄等不同位置 ),默認情況下 MyBatis - Plus 不一定能直接找到,需要配置?mapper - locations
?來指定路徑 ,常見配置方式如下:
- 在?
application.yml
?中配置:
mybatis - plus:mapper - locations: classpath:mapper/*.xml # 假設 XML 文件放在 resources/mapper 目錄下,根據實際路徑調整type - aliases - package: com.neuedu.hisweb.entity # 實體類包路徑,讓 XML 中可直接用實體類名作為類型別名
- 如果 XML 文件和 Mapper 接口放在同一目錄(比如?
com/neuedu/hisweb/mapper
?下,和?xxxMapper.java
?放一起 ),需要確保 Maven 打包時能把 XML 文件一起打進?classpath
?。因為默認 Maven 只會把?src/main/resources
?下的文件打包,Java 目錄下的 XML 可能不會被打包進去,此時需要在?pom.xml
?中添加資源過濾配置:
<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include> <!-- 包含 Java 目錄下的 XML 文件 --></includes></resource><resource><directory>src/main/resources</directory></resource></resources>
</build>
然后在?application.yml
?中配置:
mybatis - plus:mapper - locations: classpath:com/neuedu/hisweb/mapper/*.xml # 精確指定 XML 所在的包路徑(和 Mapper 接口同一目錄時)type - aliases - package: com.neuedu.hisweb.entity
總結來說,實體類默認靠合理包掃描就能被找到;XML 映射文件若有自定義的,通常需要配置?mapper - locations
?以及注意打包時的資源包含,除非遵循了 MyBatis - Plus 能自動識別的特殊規則(但這種情況較少,一般復雜項目都會有自定義 XML ,需要配置 )?。你可根據自己項目是否有自定義 XML 映射文件,來判斷是否需要額外配置。