通常出現(xiàn)此情況分四類情況:
1- classpath? 路徑配置錯誤
?2- mapper 對應的 xml 沒有編譯解析到 發(fā)布包上
3- mapper的 SqlSessionFactoryBean 重新定義 沒有set? mapperLocations
4-*Mapper.xml 上的 nameSpace還有對應的實體是否匹配準確,可以耐心點合敦,細心點檢查
針對上四種情況晃洒,我以 springboot+mybatisplus? 說明娜膘,主要說明前三情況,最后一種自己耐心檢查
例如我的目錄上存放xml的目錄是? src/main/java/com/example/dao/mapper/
第一種情況:
例如我的命名方式為? ?**Mapper.xml
針對多modules? 的 我的 classpath可以這么配置:
mybatis-plus.mapper-locations=classpath*:com/example/dao/mapper/*Mapper.xml
對于多目錄可以采用雙*匹配符代替
第二種情況:
在pom.xml上的 增加以下激挪,以編譯解析到發(fā)布包上
<build>
? ? ? ? <resources>
? ? ? ? ? <resource>
? ? ? ? ? ? ? ? <directory>src/main/java</directory>
? ? ? ? ? ? ? ? <includes>
? ? ? ? ? ? ? ? ? ? <include>**/*.xml</include>
? ? ? ? ? ? ? ? </includes>
? ? ? ? ? ? ? <filtering>false</filtering>
? ? ? ? ? ? </resource>
? ? ? ? </resources>
? ? </build>
第三種情況
主要是因為配置了MybatisSqlSessionFactoryBean,然后框架并沒有去讀取屬性文件或配置文件上的mybatis-plus.mapper-locations,好好檢查下。
例如舉例說明锦爵,配置MybatisSqlSessionFactoryBean? 記得把xml路徑和掃描包配置進去:
@Bean
? ? public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean() throws Exception{
? ? ? ? MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();
? ? ? ? mybatisPlus.setDataSource(dataSourceMultiple(db1(), db2()));
? ? ? ? MybatisConfiguration configuration = new MybatisConfiguration();
? ? ? ? configuration.setJdbcTypeForNull(JdbcType.NULL);
? ? ? ? configuration.setMapUnderscoreToCamelCase(true);
? ? ? ? configuration.setCacheEnabled(false);
? ? ? ? mybatisPlus.setConfiguration(configuration);
? ? ? ? mybatisPlus.setPlugins(new Interceptor[]{
? ? ? ? ? ? ? ? paginationInterceptor()
? ? ? ? });
? ? ? ? mybatisPlus.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
? ? ? ? mybatisPlus.setTypeAliasesPackage(typeAliasesPackage);
? ? ? ? return mybatisPlus;
? ? }
注解:以上的兩個對應以下,讀取屬性或配置文件的路徑設置進去
@Value("${mybatis-plus.mapper-locations}")
private String mapperLocations;
@Value("${mybatis-plus.type-aliases-package}")
private String typeAliasesPackage;