oracle批量新增的sql是:
<insert id="insertAttractionsBatch" parameterType="Java.util.List"> insert into ATTRACTIONS ( ID, NAME, LONGITUDE, LATITUDE, UPDATE_TIME ) <foreach collection="list" item="item" index="index" separator="union all" > (select #{item.id,jdbcType=VARCHAR}, #{item.name,jdbcType=VARCHAR}, #{item.longitude,jdbcType=DECIMAL}, #{item.updateTime,jdbcType=TIMESTAMP} from dual) </foreach> </insert>
需要重点注意的是sql中没有values,和<foreach>标签中的(selece ..... from dual)
MySql中的sql是这样的:
新增:
<insert id="insertAttractionsBatch" parameterType="java.util.List"> insert into ATTRACTIONS ( ID, NAME, LONGITUDE, LATITUDE, UPDATE_TIME ) <foreach collection="list" item="item" index="index" separator="union all" > #{item.id,jdbcType=VARCHAR}, #{item.name,jdbcType=VARCHAR}, #{item.longitude,jdbcType=DECIMAL}, #{item.updateTime,jdbcType=TIMESTAMP} </foreach> </insert>
Mysql更新是这样的:
第一种方式:
<update id="updateBatch" parameterType="Map"> update aa set a=#{fptm}, b=#{csoftrain} where c in <foreach collection="cs" index="index" item="item" pen="("separator=","close=")"> #{item} </foreach> </update>但是这种方式修改的字段值都是一样的。
第二种方式:
<update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="" close="" separator=";"> update test <set> test=${item.test}+1 </set> where id = ${item.id} </foreach> </update>这种方式,可以一次执行多条SQL语句
oracle更新不能按普通的方式,需要这样:
<update id="updateAttractionsBatch" parameterType="java.util.List"> begin <foreach collection="list" item="item" index="index" separator=";" > update ATTRACTIONS <set> <if test="item.id!=null and item.id!=''"> id = #{item.id}, </if> <if test="item.head!=null and item.head!=''"> HEAD = #{item.head}, </if> </set> where id = #{item.id} </foreach> ;end; </update>
删除与MySql一样如下:
<delete id="deleteAttractions" parameterType="java.util.List"> delete from ATTRACTIONS <where> <foreach collection="list" index="index" item="item" open="(" separator="or" close=")"> id=#{item.id} </foreach> </where> </delete>