generator创建的mapper.xml没法被mapper层的接口读取
时间: 2024-10-14 22:14:55 浏览: 21
在Spring Boot项目中,如果你使用MyBatis作为持久层框架,并通过`@Mapper`注解生成mapper.xml文件,如果某个mapper是由`Generator`(如mybatis-generator-core库)自动生成的,可能会遇到无法被对应的接口自动扫描和加载的问题。这是因为`Generator`通常会生成一些动态生成的实体映射(dynamic SQL),这超出了`@Mapper`接口静态绑定的范围。
解决这个问题的一种常见做法是:
1. **手动配置**:你可以将自动生成的mapper.xml文件放在合适的位置(比如`mappers`目录下),然后在`mybatis-spring-boot-starter`的配置里添加这个xml文件到`sqlSessionFactory`的资源中。
```java
@Configuration
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(MappingSqlSessionFactoryBuilder factoryBuilder) throws Exception {
// 添加自动生成的mapper.xml路径
String[] mapperLocations = {"classpath:mappers/*.xml"};
return factoryBuilder.build(mapperLocations);
}
}
```
2. **利用插件**:可以考虑使用第三方插件如`mybatis-generator-maven-plugin`,在构建过程中直接处理生成的mapper。
3. **代码生成策略调整**:检查`Generator`的配置,确保它能够生成`@Mapper`注解需要的接口形式,或者尝试调整生成规则,让其直接生成接口以及对应的xml。
记得在生成完成后,还需要在`@Mapper`接口上指定相应的包名,以便于Spring Boot自动扫描到。
阅读全文