[BindingException]org.apache.ibatis.binding.BindingException

本文解析了org.apache.ibatis.binding.BindingException错误原因,通常源于Mapper接口与XML不匹配。文章详细介绍了检查点,包括包名一致性、方法名、参数及返回值匹配,确保正确配置避免异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

解释:一般是由于Mapper接口和对应的Mapper.xml对应出现错误,导致爆出这个Exception,主要有几个注意事项:

  1. 检查xml文件所在的package名称是否和interface对应的package名称一致
比如:接口名是NameMapper.java;对应的xml就应该是NameMapper.xml
  1. mapper.xml的命名空间(namespace)是否跟mapper接口的包名一致

在这啰嗦一下,如果spring_mybatis.xml配置文件中扫描xml时限制要求,那么一定要按照格式写,否则不会扫描到该xml,即使接口与xml都一致。

比如,接口包名是com.abc.dao,接口名是NameMapper.java,那么mapper.xml的namespace应该是com.abc.dao.NameMapper
--------------------------------------------------------------------------------------------------------
啰嗦一下(这次我就是犯的这个错误,导致一个小时抓狂):
配置文件:<property name="mapperLocations"  value="classpath*:cn/gcheng/modules/**/*Mapper.xml"/>

错误代码:
xxxInfoMapperNew.java   xxxInfoMapperNew.xml 相关配置文件限制,此xml是扫描不到,导致这个错误
  1. 检查方法名称能否一致
比如,接口中方法名为findListById,那么mapper.xml中的SQL为<select id="findListById">****</select>
  1. 检查传入参数是否一致

为防止出现错误,无论单参数或多参数尽量用注解标记@Param(“xxx”),xml中直接取#{xxx},若为pojo对象,使用parameterType=“pojo”)(为防止出现错误,无论单参数或多参数尽量用注解标记@Param(“xxx”),xml中直接取#{xxx},若为pojo对象,使用parameterType=“pojo”

比如,接口中方法为findListById(@Param("id")String id),那么mapper.xml中的SQL为<select id="findListById">*** a.ID = #{id}***</select>
-----------------------------------------------------------------------------------------------------------------------------------
比如,接口中方法为findListByUser(User user),那么mapper.xml中的SQL为<select id="findListByUser" parameterType="cn.gcheng.entity.User">*** a.NAME = #{name}***</select>
  1. 检查返回值是否一致

值得注意:尽量使用resultMap返回参数,但保证resultMap配置正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值