[mybatis]——Invalid bound statement (not found):cn.heima.service.com.CustomerMapper.addCustomer

本文解析了在使用MyBatis框架过程中遇到的绑定异常问题,详细分析了可能的原因,并给出了具体的解决步骤。

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

Exception in thread “main” org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.heima.service.com.CustomerMapper.addCustomer
at org.apache.ibatis.binding.MapperMethodSqlCommand.<init>(MapperMethod.java:223)atorg.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)atorg.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59)atorg.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)atcom.sun.proxy.SqlCommand.<init>(MapperMethod.java:223) at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48) at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52) at com.sun.proxy.SqlCommand.<init>(MapperMethod.java:223)atorg.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)atorg.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59)atorg.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)atcom.sun.proxy.Proxy2.addCustomer(Unknown Source)
at cn.heima.Servlet.com.Test.test1(Test.java:32)
at cn.heima.Servlet.com.Test.main(Test.java:37)
出现这个问题的原因有以下几个
1.没有在Java工程里,建立相应的接口
2.中namespace没有填写正确的接口地址
3.接口名和映射xml配置文件名不一致
4.在映射文件里写sql语句时,id=“”,id 里面的值没有填写或者填写有误。
5.接口中没有相应的方法,在映射文件里写sql语句时,id=“”。却填写了相应的方法
例如:

insert into customer(name,password1,password2,customername,gender,email,birthday) values(#{name},#{password1},# {password2},#{customername},#{gender},#{email},#{birthday});

解决方案:在定义接口 和映射xml文件时候,先查看接口中有没有相应的方法,在检查接口名和映射xml配置文件名是否一致。
将二者一致后,即可解决问题。
如:接口定义名称:UserOperation.java
映射xml名称: UserOperation.xml

解释:
为什么需要保持接口名和映射文件xml名保持一致?
答:这里体现了一个编程思想,面向接口编程。
面向接口编程有两种常用的形式
1.接口<------->实现类(一一对应)
2.接口<------>配置文件(一一对应)
这里配置文件又分为两种。1. xml配置文件 2. properties配置文件
保持接口名和配置文件名保持一致,有利于读者清晰的知道这个配置文件就是这个接口的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值