Trong tệp bản đồ Mybatis xml, tôi đã cố gắng viết truy vấn cập nhật cho bảng Người dùng như được hiển thị bên dưới. Mỗi tham số đầu vào có thể là null và tôi chỉ cập nhật khi nó không phải là null. Bạn không biết điều kiện 'if' nào có thể rơi vào và cái nào có thể là điều cuối cùng, do đó dấu phẩy phải được thêm vào trong mỗi câu lệnh.MyBatis thêm dấu phẩy trong truy vấn cập nhật
Vấn đề là thêm ',' gây ra ngoại lệ truy vấn. Có vẻ như Mybatis không bỏ qua dấu phẩy thừa.
Giải pháp thay thế của tôi là đặt "id = # {id}" vào cuối đã khắc phục sự cố nhưng không cần thiết.
Giải pháp thực sự là gì?
Mã:
<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: Môi trường Tôi đang sử dụng là: Java Spring + MyBatis + MySQL.
Tôi không quen thuộc với 'mybatis' nên tha thứ cho những câu hỏi ngớ ngẩn, nhưng tại sao bạn cần một dấu phẩy sau' # {email} 'trong lần đầu tiên địa điểm? –
@ shree.pat18, trong trường hợp email == null nhưng mật khẩu! = Null, câu lệnh cuối cùng trước WHERE là mật khẩu = # {password}, có thêm dấu phẩy, vì vậy tôi phải thêm giải pháp thay thế "id = # {id} ", dẫn đến dấu phẩy sau # {email}. –