J'ai essayé d'insérer plusieurs données en masse en utilisant MyBatis <foreach>
.
Pour une raison quelconque, une telle erreur se produit.
La version de MyBatis est 3.2.
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [addItems, param1]
ItemMasterMapper.java
void addItems(@Param("addItems") List<Item> addItems);
ItemMasterMapper.xml
<insert id="addItems">
INSERT INTO item_master(name, price, option) VALUES
<foreach item="item" collection="addItems" separator=",">
(#{item.name}, #{item.price}, #{item.option})
</foreach>
</insert>
Item.java
public class Item {
private String name;
private long price;
//~~~ Le setter et le getter sont omis ci-dessous ~~~
}
Pourquoi ce genre de chose? ?? Est-ce une faute de frappe avec le nom du paramètre spécifié par @ Param
dans le contenu de l'erreur?
Ou mon Batis utilisé est-il trop vieux pour supporter les inserts en vrac?
J'ai juste cherché le message d'erreur sur Google.
Si vous regardez de plus près, ʻoption n'est pas définie dans la classe ʻItem
.
Item.java
public class Item {
private String name;
private long price;
//↓ Cela manquait
private String option;
//~~~ Le setter et le getter sont omis ci-dessous ~~~
}
Il existe une différence entre le nom de la variable décrit dans Mapper XML et la variable membre de la classe de modèle réelle.
Que s'est-il passé à l'intérieur de la balise «