Vírgula extra MyBatis na consulta de atualização
No arquivo mapeador Mybatis xml, tentei escrever uma consulta de atualização para a tabela Usuário, como mostrado abaixo. Cada parâmetro de entrada pode ser nulo e eu atualizo apenas quando não é nulo. Você não sabe qual condição 'se' poderia passar e qual poderia ser a última, portanto, vírgula deve ser adicionada em cada instrução.
O problema é que o extra ',' causa uma exceção de consulta. Parece que Mybatis não ignora vírgula extra.
Minha solução alternativa é colocar "id = # {id}" no final, corrigindo o problema, mas é redundante.
Qual é a solução real?
O código:
<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: O ambiente que estou usando é: Java Spring + MyBatis + MySQL.