最近在使用 MyBatis 框架时遇到这个问题:
后来检查到是因为自定义了 mapper
文件夹,导致项目找不到默认路径了。需要重新配置路径。
如果想要详细了解这个错误,可以接着看下去。
这个错误信息表明在 Spring Boot
项目中整合 MyBatis
时,MyBatis
无法找到对应的映射器文件(mapper XML
)或接口中定义的selectById
方法。
BindingException
通常发生在MyBatis尝试绑定一个不存在的SQL语句到接口方法时。
org.apache.ibatis.binding.BindingException
: 这个异常表示在绑定SQL
语句到接口方法时出现了问题。Invalid bound statement (not found): com.wen.mapper.TbUserMapper.selectById
:这说明MyBatis
在TbUserMapper
接口中找不到selectById
方法的绑定语句。这通常意味着对应的SQL
语句没有被正确定义,或者MyBatis
没有正确加载映射器文件。
检查映射器文件
- 确认
TbUserMapper.xml
文件存在,并且位于正确的位置(通常是src/main/resources/mapper
目录下),这是在没有自定义mapper
文件夹路径的情况下。 - 确保文件中有一个
<select>
标签,其id
属性与接口中的selectById
方法相匹配。
例如,TbUserMapper.xml
文件中应该有以下内容:
<mapper namespace="com.wen.mapper.TbUserMapper">
<select id="selectById" resultType="com.wen.entity.TbUser">
SELECT * FROM tb_user WHERE id = #{id}
</select>
</mapper>
检查接口方法:
- 确认
TbUserMapper
接口中确实有一个selectById
方法,并且方法签名与映射器文件中的<select>
标签相匹配。
例如,TbUserMapper
接口中应该有以下方法:
@Mapper
public interface TbUserMapper {
TbUser selectById(Long id);
}
配置文件检查:
- 确认
application.yml
或application.properties
文件中MyBatis
的配置是否正确,确保MyBatis
知道在哪里查找映射器文件。
例如,在application.yml
中:
mybatis:
mapper-locations: classpath:mapper/*.xml
依赖检查:
- 确保你的项目中包含了
MyBatis
和MyBatis-Spring-Boot-Starter
的依赖,并且版本是兼容的。
一般出现 BindingException
情况就以上几种。