Springboot整合MyBaties,在IDEA启动时报错Invalid bound statement (not found),是mapper和对应的xml文件无法建立映射关系,一般从如下几方面进行排查:
1.namespace下面的路径 一定要对应Dao接口或者Mapper接口
2.Dao 或者Mapper下面的方法名 和XML 中的id保持一致
3.yaml文件中的*Mapper.xml文件路径配置正确
4.*mapper.java和*mapper.xml名称保持一致
5.检查编译后的包*mapper.xml包含在其中
如果不存在,在pom文件的<build>标签下添加</resources>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>**/*.yaml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>**/*.yaml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
6.特别注意,如果自定义了SqlSessionFactory的bean的话,需要在SqlSessionFactory配置MapperLocations
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dynamicDataSource());
//解决手动创建数据源后字段到bean属性名驼峰命名转换失效的问题
sqlSessionFactoryBean.setConfiguration(configuration());
// 设置mybatis的主配置文件
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mapper/**.xml"));
return sqlSessionFactoryBean.getObject();
}