zoukankan      html  css  js  c++  java
  • Springboot+Mybatis(Mysql 、Oracle) 注解和使用Xml两种方式批量添加数据

    1、使用注解的方式批量添加数据,在该方法中,传进来的参数是一个List集合,使用一个foreach 循环解析集合的数据,最后再批量保存到数据库

     代码如下:

    //批量保存
    @Insert({"<script>",
    "insert into QUESTION_BANK (NAME, SUBJECT, TYPE,OPTION_A,OPTION_B,OPTION_C,OPTION_D,OPTION_E,OPTION_F,ANSWER,IS_EXISTENCE) ",
    "SELECT A.* FROM (",
    "<foreach collection ='list' item='questionBanks' separator ='union all' >",
    "(SELECT " +
    "#{questionBanks.name} NAME," +
    "#{questionBanks.subject} SUBJECT," +
    "#{questionBanks.type} TYPE," +
    "#{questionBanks.optionA} OPTION_A," +
    "#{questionBanks.optionB} OPTION_B," +
    "#{questionBanks.optionC} OPTION_C," +
    "#{questionBanks.optionD} OPTION_D," +
    "#{questionBanks.optionE} OPTION_E," +
    "#{questionBanks.optionF} OPTION_F," +
    "#{questionBanks.answer} ANSWER," +
    "#{questionBanks.isExistence} IS_EXISTENCE FROM DUAL)",
    "</foreach> ) A",
    "</script>"
    })
    int saveAll(List<QuestionBank> questionBanks);
     
       

    第二种方式是springboot结合mybatis 使用xml文件时候的批量添加数据,在该方法中,传进来的同样是一个List集合数据,需要注意的地方已标红

     代码如下:

    <insert id="addUserGroupRelationList" parameterType="java.util.List">
    INSERT All
    <foreach collection="list" item="item" index="index">
    INTO USERGROUP_RELATION(ENTIEY_UUID,PARENT_UUID,SUPERIOR) VALUES
    (
    #{item.entieyUuid,jdbcType=VARCHAR},
    #{item.parentUuid,jdbcType=VARCHAR},
    #{item.superior,jdbcType=NUMERIC}
    )
    </foreach>
    SELECT 1 FROM dual
    </insert>
     
       

    上面两个添加语句使用的数据库都是Oracle,下面再来介绍一下使用XML 文件往Mysql数据库批量添加数据,不同的数据库批量添加使用的语句还是有一些小区别的,下面直接看代码吧:

      <insert id="saveAllExcelData" parameterType="java.util.List">
               INSERT  INTO sys_veterinary(
                     name,
                     address,
                     longitude,
                     latitude,
                     phone,
                     store_keeper,
                     scope,
                     skill)values
             <foreach collection="list" item="item" index="index" separator=",">
              (
               #{item.name,jdbcType=VARCHAR},
               #{item.address,jdbcType=VARCHAR},
               #{item.longitude,jdbcType=VARCHAR},
               #{item.latitude,jdbcType=VARCHAR},
               #{item.phone,jdbcType=VARCHAR},
               #{item.storeKeeper,jdbcType=VARCHAR},
               #{item.scope,jdbcType=VARCHAR},
               #{item.skill,jdbcType=VARCHAR}
               )
             </foreach>
      </insert>

     新增批量删除:(oracle数据库)

     <delete id="deleteById" parameterType="java.util.List">
            delete from User t where id in
            <foreach item="item" collection="list" open="(" separator="," close=")">
                #{item.userId,jdbcType=VARCHAR}     //传进来的是实体类集合,只要获取每条数据的id即可
            </foreach>
    </delete>

    小提示:一开始可以先用sql语句去数据库中运行添加,看能否成功添加,一般sql语句可以正常执行,再转换一下思路就能在代码中实现了。

     
  • 相关阅读:
    [KB] Office序列号移除器
    收音机的记忆
    EnCase v7 正式版预览
    关于Ex01和EnCase 6.19的小道消息
    EnCase V7 正式发布 新特性
    [EnCase v7专题] EX01证据文件获取设置释疑
    智能手机应用取证系列之三:腾讯微博Android手机客户端取证分析
    [EnCase v7] EnCase v7零售版改用CodeMeter加密狗
    Http Server的一个示例
    一个简单的加解密算法
  • 原文地址:https://www.cnblogs.com/yanghr/p/12878415.html
Copyright © 2011-2022 走看看