一、參數綁定失敗html
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'msgs3' not found. Available
parameters are [msgs, param1]
相關信息java
<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);
}
分析思路spring
通過測試發現錯誤是從map.xml文件報出來的,也就是說,系統是能夠讀到xml文件的,可是經過xml文件讀取對應的參數msgs3時報錯。即,問題出在map.java上面。可是,檢查了命名,並無相關問題。apache
解決方案mybatis
既然是綁定的問題,那麼問題確定不是在xml文件上,就是在對應的map的java方法上。因此,有兩種解題方法。app
值得注意的是:指定了傳參名稱之後,默認值就會失效測試
一、修改xml文件spa
經過測試發現,foreach 中的collection貌似默認值爲 list,當不指定傳參的名稱時,能夠直接使用。code
<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>
二、修改Mapxx.java中的方法參數xml
//Mapper類 public interface UserMapper { public void insertBatch (@Param("msgs") List<User> users); }