In der Mybatis-XML-Mapper-Datei habe ich versucht, die Aktualisierungsabfrage für die Benutzertabelle zu schreiben, wie unten gezeigt. Jeder der Eingabeparameter könnte null sein und ich würde nur aktualisieren, wenn es nicht null ist. Sie wissen nicht, welche 'if' Bedingung durchfallen könnte und welche die letzte sein könnte, daher muss in jeder Anweisung ein Komma hinzugefügt werden.MyBatis zusätzliches Komma in der Aktualisierungsabfrage
Das Problem ist, dass das zusätzliche ',' Abfrage Ausnahme verursacht. Es scheint, dass Mybatis zusätzliches Komma nicht ignoriert.
Meine Problemumgehung ist es, "ID = # {ID}" am Ende zu setzen, die das Problem behoben, aber es ist überflüssig.
Was ist die wirkliche Lösung?
Der Code:
<update id="update" parameterType="User">
UPDATE user SET
<if test="username != null">
username = #{username},
</if>
<if test="password != null">
password = #{password},
</if>
<if test="email != null">
email = #{email},
</if>
id= #{id} // this is redundant
WHERE id = #{id}
</update>
PS: Die Umgebung Ich verwende ist: Java Spring + Mybatis + MySQL.
Ich bin nicht vertraut mit 'mybatis' so verzeiht die dumme Frage, aber warum brauchen Sie ein Komma nach' # {email} 'in dem ersten Ort? –
@ shree.pat18, im Fall von E-Mail == null aber Passwort! = Null, die letzte Anweisung vor WHERE ist Passwort = # {Passwort}, die ein zusätzliches Komma hat, also muss ich die Umgehung hinzufügen "id = # {id} ", was das Komma nach # {email} ergibt. –