mybatis批量添加,更新,删除(mapper.xml)


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>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM