[JAVA] Ich leide unter My Batis für jeden Fehler

Ich war süchtig nach My Batis foreach

Ich wollte MyBatis '' verwenden, um mehrere Daten in großen Mengen einzufügen. Aus irgendeinem Grund tritt ein solcher Fehler auf. Die Version von MyBatis ist 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]

Implementierung

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;

//~~~ Der Setter und der Getter sind unten weggelassen ~~~
}

Warum ist so etwas? ?? Ist es ein Tippfehler mit dem Parameternamen, der im Fehlerinhalt durch "@ Param" angegeben ist? Oder ist mein Batis zu alt, um Bulk-Einsätze zu tragen? Ich habe nur nach der Fehlermeldung gegoogelt.

Ursache

Wenn Sie genauer hinschauen, ist Option in der Klasse Item nicht definiert.

Item.java


public class Item {
    private String name;
    private long price;
    //↓ Dies fehlte
    private String option;

//~~~ Der Setter und der Getter sind unten weggelassen ~~~
}

Es besteht eine Diskrepanz zwischen dem in Mapper XML beschriebenen Variablennamen und der Mitgliedsvariablen der tatsächlichen Modellklasse. Was ist im Tag passiert? Es scheint, dass ein Fehler wie "__ frch_item_0" nicht gefunden "aufgetreten ist. Warum existierte der Gegenstand hier plötzlich nicht mehr ... Ich wünschte, ich könnte Ihnen sagen, dass es normalerweise keine Option gibt ... Gib meine anderthalb Stunden zurück ...

Recommended Posts

Ich leide unter My Batis für jeden Fehler
Von iBATIS zu MyBatis3 verschoben
JSP-Fehleranzeige vom Servlet
SpringBoot + Mybatis-Fehler beim Booten