mybatis在使用批量更新时mysql和oracle有一些差别,记录下以免下次忘记。
一、mybatis执行批量更新batch update 的方法(mysql数据库)
1、数据库连接必须配置:&allowMultiQueries=true(切记一定要加上这个属性,否则会有问题!)
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
2、批量修改并加判断条件
<update id="updateNewYzxx" parameterType="java.util.List">
<foreach collection="list" item="hspDocadviceInf" index="index" open="" close="" separator=";">
update HSP_DOCADVICE_INF
<set >
<if test="hspDocadviceInf.vstCad != null" >
VST_CAD = #{hspDocadviceInf.vstCad,jdbcType=VARCHAR},
</if>
<if test="hspDocadviceInf.docadviceIsdat != null" >
DOCADVICE_ISDAT = #{hspDocadviceInf.docadviceIsdat,jdbcType=TIMESTAMP},
</if>
<if test="hspDocadviceInf.docadviceBedat != null" >
DOCADVICE_BEDAT = #{hspDocadviceInf.docadviceBedat,jdbcType=TIMESTAMP},
</if>
<if test="hspDocadviceInf.docadviceNam != null" >
DOCADVICE_NAM = #{hspDocadviceInf.docadviceNam,jdbcType=VARCHAR},
</if>
<if test="hspDocadviceInf.docadviceNuimdat != null" >
DOCADVICE_NUIMDAT = #{hspDocadviceInf.docadviceNuimdat,jdbcType=TIMESTAMP},
</if>
<if test="hspDocadviceInf.docadviceNuimnam != null" >
DOCADVICE_NUIMNAM = #{hspDocadviceInf.docadviceNuimnam,jdbcType=VARCHAR},
</if>
<if test="hspDocadviceInf.docadviceDocstdat != null" >
DOCADVICE_DOCSTDAT = #{hspDocadviceInf.docadviceDocstdat,jdbcType=TIMESTAMP},
</if>
<if test="hspDocadviceInf.docadviceDocstnam != null" >
DOCADVICE_DOCSTNAM = #{hspDocadviceInf.docadviceDocstnam,jdbcType=VARCHAR},
</if>
<if test="hspDocadviceInf.docadviceNustdat != null" >
DOCADVICE_NUSTDAT = #{hspDocadviceInf.docadviceNustdat,jdbcType=TIMESTAMP},
</if>
<if test="hspDocadviceInf.docadviceNustnam != null" >