baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.4k stars 4.31k forks source link

如何处理AMapper中某个函数初始化依赖BMapper某个函数的的查询结果中的数据 #6322

Closed JeeBlack closed 3 months ago

JeeBlack commented 3 months ago

AMapper的字段等元数据被存储在BMapper对应的表中,有没有办法优先加载BMapper(泛指一类)

huayanYu commented 3 months ago

MyBatis 是一个流行的 Java 持久层框架,它通过 XML 或注解来配置 SQL 映射。在使用 MyBatis 时,可以配置多个 Mapper 接口和对应的 XML 映射文件。Mapper 的加载顺序通常遵循以下规则:

XML 配置文件加载:MyBatis 启动时会加载 mybatis-config.xml 配置文件,这个文件中可以包含多个 标签,每个标签指定了一个 Mapper XML 文件的位置。

Mapper 接口加载:在 mybatis-config.xml 中,可以通过 标签的 namespace 属性指定一个 Mapper 接口的完全限定名,MyBatis 会根据这个名称加载对应的接口。

注解方式加载:如果使用注解方式定义 Mapper,MyBatis 会扫描指定的包路径,查找带有 @Mapper 注解的接口。

加载顺序:MyBatis 首先会加载配置文件中指定的 Mapper XML 文件,然后加载使用注解定义的 Mapper 接口。如果存在同名的 XML 映射和注解定义的 Mapper,MyBatis 会根据配置文件中的 标签顺序来加载。

覆盖问题:如果存在多个相同命名的 Mapper 接口或 XML 文件,MyBatis 会按照加载顺序覆盖之前的映射定义。即后加载的映射会覆盖先加载的映射。

优先级问题:在配置文件中指定的 标签的顺序决定了 Mapper 的加载顺序。如果需要控制特定的加载顺序,可以在配置文件中调整 标签的位置。

自动扫描:MyBatis 允许通过配置文件中的 标签的 resource 或 url 属性指定 XML 文件的路径,也可以通过 scan 属性指定要扫描的包路径来自动发现 Mapper 接口。

缓存机制:MyBatis 会将加载的映射信息缓存起来,以提高性能。这意味着一旦 Mapper 被加载,其映射信息就会被缓存,直到应用程序重新启动。

了解这些加载顺序和规则对于有效管理 MyBatis 项目中的 Mapper 配置非常重要,尤其是在大型项目中,确保映射的正确性和一致性是至关重要的。