[JAVA] Souffrant de My Batis foreach erreur

J'étais accro à My Batis foreach

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]

la mise en oeuvre

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.

Cause

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 «» Il semble qu'une erreur telle que `` __ frch_item_0 'not found` s'est produite. Pourquoi «élément» n'existait-il soudainement pas ici ... J'aimerais pouvoir vous dire qu'il n'y a généralement pas d'option ... Rends-moi une heure et demie ...

Recommended Posts

Souffrant de My Batis foreach erreur
Passé d'iBATIS à MyBatis3
Affichage d'erreur JSP à partir du servlet
Erreur SpringBoot + Mybatis lors du démarrage