1,批量添加
批量插入數據使用的sql語句是:
insert into table (字段一,字段二,字段三) values(xx,xx,xx),(oo,oo,oo)
mapper文件:
int insertBatch(List<TmApplyTemplateDetail> applyTemplateDetailList);
mapper.xml文件:
<insert id="insertBatch" parameterType="list"> insert into tm_apply_template_detail( template_id,model_id,total_count,remark ) values <foreach collection="list" item="item" separator=","> ( #{templateId},#{modelId},#{totalCount},#{remark} ) </foreach>
</insert>
注意:當然你也可以在Java中寫個循環,然后一條條的去添加,不過這樣頻繁insert執行效率比較低,在項目規模比較小和一次性插入數據不多時可以用。還是建議批量添加。
2,批量更新
批量更新SQL:
UPDATE table SET aa = CASE id WHEN 1 THEN 'oo' WHEN 2 THEN 'pp' WHEN 3 THEN 'qq' END ,SET bb = CASE id WHEN 1 THEN 'xx' WHEN 2 THEN 'yy' WHEN 3 THEN 'zz' END WHERE id IN (1,2,3)
mapper.xml文件:
<update id="updateBatch"> update wd_solr set name = <foreach collection="list" item="item" separator=" " open="case id" close="end"> when #{item.id} then #{item.name} </foreach> ,logo = <foreach collection="list" item="item"separator=" " open="case id" close="end"> when #{item.id} then #{item.logo} </foreach> ,timestamp = <foreach collection="list" item="item"separator=" " open="case id" close="end"> when #{item.id}
then #{item.timestamp} </foreach> where id in <foreach collection="list" item="item" separator="," open="(" close=")"> #{item.id} </foreach>
</update>
3,批量刪除
SQL:
delete from table where XX IN(XX,XX,XX)
mapper.xml:
<delete id="deleteByBatch"> delete from t_enterprise_output_value where output_id IN <foreach collection="array" item="outputId" open="(" separator="," close=")"> #{outputId} </foreach> </delete>