初学者手册-MyBatis踩坑记(org.apache.ibatis.binding.BindingException)
1、参数绑定失败
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'msgs3' not found. Available
parameters are [msgs, param1]
相关信息
<insert id="insertBatch"> INSERT INTO t_user (id, name, del_flag) VALUES <foreach collection ="msgs3" item="user" separator =","> (#{user.id}, #{user.name}, #{user.delFlag}) </foreach > </insert>
//Mapper类
public interface UserMapper {
public void insertBatch (List<User> users);
}
分析思路
经过测试发现错误是从map.xml文件报出来的,也就是说,系统是可以读到xml文件的,但是通过xml文件读取对应的参数msgs3时报错。即,问题出在map.java上面。但是,检查了命名,并没有相关问题。
解决方案
既然是绑定的问题,那么问题肯定不是在xml文件上,就是在对应的map的java方法上。所以,有两种解题方法。
值得注意的是:指定了传参名称以后,默认值就会失效
1、修改xml文件
通过测试发现,foreach 中的collection貌似默认值为 list,当不指定传参的名称时,可以直接使用。
<insert id="insertBatch"> INSERT INTO t_user (id, name, del_flag) VALUES <foreach collection ="list" item="user" separator =","> (#{user.id}, #{user.name}, #{user.delFlag}) </foreach > </insert>
2、修改Mapxx.java中的方法参数
//Mapper类 public interface UserMapper { public void insertBatch (@Param("msgs") List<User> users); }
----------------------------------------------------------------------------
我的小鱼你醒了,
还认识早晨吗?
昨夜你曾经说,
愿夜幕永不开启。
你的香腮边轻轻滑落的,
是你的泪,还是我的泪?
初吻吻别的那个季节,
不是已经哭过了吗?
我的指尖还记忆着,
你慌乱的心跳。
温柔的体香里,
那一缕长发飘飘。