Nel file di mappatura Mybatis xml, ho provato a scrivere la query di aggiornamento per la tabella Utente come mostrato di seguito. Ciascuno dei parametri di input può essere nullo e viene aggiornato solo quando non è nullo. Non sai quale condizione 'se' potrebbe cadere e quale potrebbe essere l'ultima, quindi la virgola deve essere aggiunta in ogni dichiarazione.MyBatis extra comma nella query di aggiornamento
Il problema è che l'extra "," causa l'eccezione di query. Sembra che Mybatis non ignori la virgola extra.
La mia soluzione è di mettere "id = # {id}" alla fine che ha risolto il problema ma è ridondante.
Qual è la vera soluzione?
Il codice:
<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: L'ambiente che sto usando è: Java Spring + MyBatis + MySQL.
io non sono a conoscenza 'mybatis' così perdonare l'domanda stupida, ma perché avete bisogno di una virgola dopo' # {email} 'nel primo posto? –
@ shree.pat18, nel caso di email == null ma password! = Null, l'ultima istruzione prima di WHERE è password = # {password}, che ha una virgola extra, quindi devo aggiungere la soluzione "id = # {id} ", risultante dalla virgola successiva a # {email}. –