Wenn wir Daten stapelweise einfügen, müssen wir die ID der eingefügten Daten erhalten.
Auf diese Weise:
<insert id="insertUser" parameterType="gys.entity.User" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user` (userName) VALUES (#{userName})</insert>
Das ist kein Problem.
Aber manchmal ist eine Stapeleinfügung erforderlich, und um die eingefügte ID zu erhalten
schreiben Sie so:
<insert id="insertUserBatch1" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user` (userName) VALUES<foreach collection="list" separator="," item="item">(#{item.userName})</foreach></insert>
Nach dem Ausführen tritt eine Ausnahme auf so.
Das liegt daran, dass die Version von mybatis, die Sie verwenden, zu niedrig ist. Ich verwende beispielsweise Version 3.2.2, was ein Fehler von mybatis ist.
Wenn Sie wechseln bis Version 3.4.4 wird es kein Problem geben.
Wenn die obige SQL-Anweisung anders geschrieben ist, wird erneut eine Ausnahme gemeldet (Einfügung in foreach einschließen)
Zum Beispiel:
<insert id="insertUserBatch2"> <foreach collection="list" separator=";" item="item"> INSERT INTO `user` (userName) VALUES (#{item.userName}) </foreach></insert>
Ebenso tritt bei Batch-Updates von update dieses Problem auf
<update id="updateUserBatch"><foreach collection="list" item="item" separator=";">update `user` set userName=#{item.userName} where userId=#{item.userId}</foreach></update>
Dies liegt daran, dass mybatis nur eine SQL-Anweisung ausführen kann Standard, und
kann den Pfad neu verknüpfen. Durch Hinzufügen von Parametern können Sie mehrere SQL-Anweisungen ausführen allowMultiQueries=true
Das obige ist der detaillierte Inhalt vonSo bedienen Sie den Batch-Einsatz von Mybaits. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!