Mybatis 批量操作(增、刪、改)操作(資料庫 oracle 11g)
阿新 • • 發佈:2019-01-12
1、批量更新
oracle 和 Mysql的語法有一些,差異,使用時注意 <!--oracle 11g 語法--> <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";"> update tableName set yqb = #{item.yqb} where id = ${item.id} </foreach> </update> <!--mysql語法--> <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="" close="" separator=";"> update tableName set yqb = #{item.yqb} where id = ${item.id} </foreach> </update>
2、批量刪除
注:oracle資料庫in查詢數量最多支援1000個,超過會報錯;使用需謹慎
<delete id="batchDelete" parameterType="java.util.List"> delete from tableName where id in ( <foreach collection="list" item="item" index="index" open="" close="" separator=","> #{item,jdbcType = VARCHAR} </foreach> ) </delete>
3、批量新增
注:foreach標籤底層使用的遞迴的方式實現,如果插入數量過多有可能導致棧溢位錯誤;需謹慎使用
<insert id="batchInsert" parameterType="java.util.List"> insert into tableName(id,name,age) <foreach collection="list" item="item" index="index" open="" close="" separator="union all"> select #{item.id,jdbcType = VARCHAR},#{item.name,jdbcType = VARCHAR},#{item.age,jdbcType = VARCHAR} from dual </foreach> </insert>