zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Vue 中的无状态组件
    如何在 Vue 中使用 JSX 以及使用它的原因
    webpack打包优化的四种方法(多进程打包,多进程压缩,资源 CDN,动态 polyfill)
    watch监听对象
    微信小程序动态设置图片大小
    Flutter的生命周期和路由
    两个字符串的编辑距离学习[转载]
    系统进化树怎么看[转载]
    感知机PLA算法实现[转载]
    余弦相似度计算[转载]
  • 原文地址:https://www.cnblogs.com/zhulei2/p/13432059.html
Copyright © 2011-2022 走看看