<update id="addAnswerDetail" parameterType="com.chali.facade.chabohui.dto.competition.SemifinalResultAnswerDetailUpdateDto">
UPDATE
<include refid="table"/>
<set>
VERSION = #{version,jdbcType=INTEGER}+1,
<if test="answerDetail != null">
ANSWER_DETAIL =JSON_ARRAY_APPEND(ANSWER_DETAIL,'$', CAST(#{answerDetail,jdbcType=VARCHAR} AS JSON ))
</if>
</set>
WHERE ID = #{id,jdbcType=BIGINT} AND VERSION = #{version,jdbcType=INTEGER}
</update>
JSON_ARRAY_APPEND默认只能插入字符串或者数值类, 如果是数组或者对象, 需要用 CAST AS JSON
这里顺便贴上mysql的官方文档
MySQL :: MySQL 5.7 Reference Manual :: 12.18.4 Functions That Modify JSON Values