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 «