mybatis '__frch_item_0' not found.

看了网上一些使用Mybatis往Oracle批量插入数据的文章,打算使用insert ALL 方式试一下。

结果在执行的时候报错:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_p_0' not found. Available parameters are [list]

为了搞清楚为什么会报这个错,使用idea添加BindingException异常断点,重写执行到异常位置,
image.png

这里可以看出,this指向一个map,现在要在这个从这个map里取出key为
__frch_p_0的对象,但是这个map里只有一个list,这个list是我传给sql的List。正常应该是从list取对象,然后调用对象的所有get方法才对。带着问题,往上查看函数栈,

image.png

这个函数里边终于确定问题所在,在boundSql.hasAdditionalParameter(propertyName)时返回了false,导致走到else分支,最总导致报错。而返回false是因为hasAdditionalParameter会去判断有没有propertyName属性对应的get方法,结果没找到。(因为我在xml中写错了,应该是grantRatio,而不是grantRatio1)。
image.png

至此问题确定。

370 声望
5 粉丝
0 条评论
推荐阅读
avx2 使用vpshufb指令做字符分类
先说simdjson中为啥用这个指令,它需要从字符数组中提取出6种控制字符(‘:’, \’, ‘:’, ‘"’, ‘{’, ‘}’),以及空格换行等4种无实际意义的字符(‘\r’,‘\n’,‘\t’,‘ ’)。

gg22g2阅读 1.3k

Mybatis缓存机制
Mybatis内置了强大的事务性查询缓存机制,正确使用Mybatis的缓存机制可以有效提高应用的性能。因为一般情况下我们应用的大部分性能消耗都和数据库查询有关,如果能够有效命中缓存、适当避免或减少与数据库的交互...

2阅读 983

Mybatis源码-动态SQL的实现原理
Mybatis提供了强大的动态SQL语句生成功能,以应对复杂的业务场景,本篇文章将结合Mybatis解析SQL语句的过程对Mybatis中对<if>,<where>,<foreach>等动态SQL标签的支持进行分析。

半夏之沫1阅读 1.2k

Mybatis源码-缓存机制
在Mybatis源码-Executor的执行过程中对Mybatis的一次实际执行进行了说明,在整个执行过程中,没有对缓存相关逻辑进行分析,这本篇文章中,将结合示例与源码,对Mybatis中的一级缓存和二级缓存进行说明。

半夏之沫1阅读 990

Mybatis源码-插件的使用和原理
Mybatis中的插件又叫做拦截器,通过插件可以在Mybatis某个行为执行时进行拦截并改变这个行为。通常,Mybatis的插件可以作用于Mybatis中的四大接口,分别为Executor,ParameterHandler,ResultSetHandler和Stateme...

半夏之沫1阅读 857

Mybatis-基础使用
Mybatis是一款Java持久层框架,内部将操作数据库需要的Jdbc相关代码进行了封装,同时能将SQL语句执行结果与Pojo直接进行映射。本篇文章将先对Jdbc进行学习,并在此基础上学习Mybatis的基础使用,无论是Jdbc还是My...

半夏之沫1阅读 1.7k

MyBatis 使用resultMap 以及 一对一和一对多
记录一下从hibernate 改成 mybatis 遇到的一些问题小问题一运行的时候突然发现的报错:检查过几遍之后才发现原因: 之前的时候不小心在后面增加了一个斜杠由于编译器不会对 sql 语句进行检查, 所以运行后台的时...

weiewiyi2阅读 456

370 声望
5 粉丝
宣传栏