org.apache.ibatis.binding.BindingException 异常报错原因及解决方案


一、BindingException 异常报错原因分析及解决方案

1. 异常报错描述:

BindingException 绑定异常(mybatis框架提供的异常)

这个错误提示只是告诉了我们绑定异常,可能造成的原因很多,而仅仅只是这个提示无法告诉我们具体的原因,我们需要根据具体的原因进行具体的分析。

1.1 详细描述1:

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

2. 异常报错信息案例:

2.1 案例1:

请添加图片描述

2.1.1 异常错误描述:

错误原因:无效的绑定语句(未找到):cn.cy.demo.mapper.UserMapper.getAllUser;持久层方法未能找到对应的映射文件中的SQL语句

2.1.2 解决方案:

解决思路:
1)这里,我们需要先检查我们的配置文件是否添加了mybatis.mapper-locations,并且是否添加正确

请添加图片描述


2.2 案例2:

在这里插入图片描述

2.2.1 异常错误描述:

错误原因:无效的绑定语句(未找到):cn.tedu.boot08.mapper.ProductMapper.insert;持久层方法未能找到对应的映射文件中的SQL语句

2.2.2 解决方案:

解决思路:
1)这里,我们需要检查 ProductMapper.xmlnamesppace 路径是否正确,需要与 持久层接口 的路径保持一致

在这里插入图片描述


2.3 案例3:

在这里插入图片描述

2.2.1 异常错误描述:

错误原因:无效的绑定语句(未找到):cn.tedu.boot08.mapper.ProductMapper.insert;持久层方法未能找到对应的映射文件中的SQL语句

2.2.2 解决方案:

解决思路:
1)这里,我们需要检查持久层 ProductMapperl.java 接口中的方法名称,如案例中的 insert 方法,是否与 ProductMapperl.xml 中绑定的方法 id 属性值是否一致

在这里插入图片描述

  • 未完待续…
引用[1]:nested exception is org.apache.ibatis.binding.BindingException: Parameter 'xxx' not found.Available parameters are [arg1, arg, param1, param2] 。 引[2]: 解决:请求异常:nested exception is org.apache.ibatis.binding.BindingException: Parameter 'fId' not found. Available parameters are [teacherInfo, page, param1, param2] ==================Detail===> [] 一·问题描述:(1)报错提示信息截图(2)mapper层代码截图(3)映射sql的xml文件:id在数据库表中设置了不为空,且没有默认值(4)postman测试接口传参截图 二·异常原因:(1)根本原因:动态sql语句里面,获取形参对象的fId属性值的格式不正确,导致无法获取对应值 三·解决方案:方案一:方案二: 四·测试结果:方案一:成功(1)mapper层代码:加@Param注解(2)映射sql文件:利用 “别名.属性名”,获取对象属性值(3)postman测试结果:成功 方案二:成功(1)mapper层代码:不加@Param注解(2)映射sql文件:利用 “形参对象名.属性名”,获取对象属性值(3)postman测试结果:成功 。 引用[3]: 二·异常原因: (1)根本原因:动态sql语句里面,获取形参对象的fId属性值的格式不正确,导致无法获取对应值 注意:由于数据库表设置了fId字段不为空,则插入、更新时必须给fId字段赋值, 但是本人这里是查询sql,所以跟这个fId主键约束没关系。 三·解决方案: 方案一: 。 问题:nested exception is org.apache.ibatis.binding.BindingException: Parameter 'workMeasures' not found. 回答: 这个错误提示是由于在MyBatis中找不到参数'workMeasures'导致的。根据引用[1]和引用[3]的内容,这个错误通常是由于动态SQL语句中获取形参对象的属性值的格式不正确所导致的。解决这个问题的方案可以有两种。方案一是在mapper层的代码中加上@Param注解,并在映射的SQL文件中使用"别名.属性名"的方式来获取对象的属性值。方案二是在mapper层的代码中不加@Param注解,并在映射的SQL文件中使用"形参对象名.属性名"的方式来获取对象的属性值。根据引用[2]中的描述,这两种方案都可以成功解决这个问题。请根据具体情况选择其中一种方案来解决你遇到的问题。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值