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

Posted 风子磊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

 

以上是关于mybatis批量添加,更新,删除(mapper.xml)的主要内容,如果未能解决你的问题,请参考以下文章

mybatis批量删除foreach报错

mybatis批量操作

mybatis批量删除

mybatis使用foreach进行批量插入和删除操作

Mybatis批处理(批量查询,更新,插入)

Mybatis批量更新,批量删除