出现错误:
情景一:Invalid bound statement (not found): **.dao.mapper.DataSetMapper.selectList
情景二: Caused by: org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 35
当情景一和情景二同时出现时可能存在以下可能性:
可能一: 没有读取到mapper文件
检查配置@MapperScan(basePackages = "com.xxx.mapper")
检查mybatis.mapper-locations: classpath:mapper/*.xml的配置路径是否正确
注意项目的target目录下是否有mapper.xml文件,如果没有则要在pom.xml加入如下配置
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
可能二: mybatis puls的坑
使用mybatis-plus时不能使用自带的SqlSessionFactory,要使用MybatisSqlSessionFactory
@Slf4j @Configuration @EnableTransactionManagement public class DataSourceConfig { @Autowired private Environment environment; @Autowired private DataSource mysqlDataSource; @Bean @ConfigurationProperties(prefix = "mybatis-plus.configuration") public MybatisConfiguration globalConfiguration() { return new MybatisConfiguration(); } @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean (); sqlSessionFactoryBean.setDataSource(mysqlDataSource); sqlSessionFactoryBean.setConfiguration(globalConfiguration()); sqlSessionFactoryBean.setTypeAliasesPackage(environment.getProperty("mybatis-plus.type-aliases-package")); sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(environment.getProperty("mybatis-plus.mapper-locations"))); return sqlSessionFactoryBean.getObject(); } }
数据库配置项
# Mybatis-plus配置 mybatis-plus: # 配置Mapper映射文件 mapper-locations: classpath*:/mapper/*Mapper.xml # 配置Mybatis数据返回类型别名(默认别名是类名) type-aliases-package: com.**.**.api.model.entity configuration: # 自动驼峰命名 map-underscore-to-camel-case: false #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl