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 > SELECT 1 FROM dual
</insert>

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

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

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