一直对myBatis似懂非懂,最近遇见了几个问题和大家分享下,也是做个笔记
场景:批量插入数据
影响当中sql 应该是这样的:insert () values(),可是这么想当然的写到mapper中,但是总报sql语法错误。仔细检查也没看出哪有问题,无奈只好问问古老师。当然有同仁们遇到了同样的问题,解决办法如下,虽然看的不是很习惯。
<insert id="insertBatch" parameterType="java.util.List">
insert into VDS_MODIFY_FLOW (CAR_CODE, BEFORE_VAL, AFTER_VAL,
MODULES, ITEM, MODIFY_DATE,MODIFY_CODE,VAL_TYPE)
<foreach collection="list" item="flow" index="index" separator="union all">
(select #{flow.carCode,jdbcType=VARCHAR}, #{flow.beforeVal,jdbcType=VARCHAR},
#{flow.afterVal,jdbcType=VARCHAR},
#{flow.modules,jdbcType=blob}, #{flow.item,jdbcType=<span style="font-family: Arial, Helvetica, sans-serif;">blob</span>}, #{flow.modifyDate,jdbcType=TIMESTAMP},
#{flow.modifyCode,jdbcType=VARCHAR},#{flow.valType,jdbcType=VARCHAR}
from dual)
</foreach>
</insert>
执行成功。总算是松了口气。出去抽了一根烟以示对自己的犒赏。可好景不长,一个新的问题又摆在了加班狗的面前,当modules的值太大的时候,值会被加到item中。很是无奈。还是古老师给人们指引了正确的方向,把ojdbc14 换成了ojdbc6,这样算是万事大吉,至今相安无事,坐等下班。。。