oracle mysql bulk insert bulk insert (mysql oracle bulk bulk inserts inserted at different writing mybatis) oracle / mysql same batch deletion

-- 必须明确, 批量插入,传参必须是一个List<Map或对象>, 不能是List<String>
--mysql批量插入数据 传入List<Map或对象>  表名后面没有()指定字段, 那就是全字段插入
<insert id="addNoticeRevDept">
    INSERT INTO bus_notice_dept_relation(noticeId, revDeptId)
    VALUES
    <foreach collection="list" item="item" index="index" separator=",">
        (#{item.uuid},#{item.deptId})
    </foreach>
</insert>

--mysql的批量插入, 打印的sql如下
INSERT INTO `user`(id, name) VALUES ("1","1"), ("2","2");


--oracle批量插入数据(注意是没有 VALUES的 ) 传入 List<Map>
--参考如下博客: https://www.cnblogs.com/arebirth/p/javamybatisodb1.html

<insert id="addEntryExitAnnouncementConfig">
        INSERT INTO PS_MANGO_CRC_RL_DEP_TBL(CRC_RL_FLAG, SETID_DEPT, DEPTID, FLAG)
            select A.*
            from(
            <foreach collection="list" item="item" separator="union all" >
                select
                #{item.crcRlFlag},
                #{item.setId},
                #{item.deptId},
                '0'
                from dual
            </foreach>
            )A
    </insert>
oracle批量插入打印的sql如下(与mysql批量插入打印的sql不同):
Preparing:
INTO PS_MANGO_CRC_RL_DEP_TBL(CRC_RL_FLAG, SETID_DEPT, DEPTID, FLAG)
      SELECT A.*
        FROM (SELECT ?, ?, ?, '0'
                FROM DUAL
              UNION ALL
              SELECT ?, ?, ?, '0'
                FROM DUAL) A 
 Parameters:
  R(String), CR001(String), 1(String), R(String), CR001(String), 2(String)
-- mysql批量删除

-- 1.验证可用 Mapper接口入参是数组  void deleteBatch(@Param("ids") String[] ids);
<delete id="deleteBatch">
        delete from book where id in
        <foreach collection="ids"  item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
</delete>

-- 2.验证可用 Mapper接口入参是list  void deleteBatch(@Param("list") List<String> list);
<delete id="deleteBatch">
        delete from book where id in
        <foreach collection="list"  item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
</delete>

批量删除, 因为前端传过来是数组, 所以用 方式1做批量删除更好


--oracle批量删除 和mysql相同
Mapper接口中的方法:
int deletePageNotContainsDetail(@Param("pageNotContainsList") List<String> pageNotContainsList, 
@Param("invalidFlag") String invalidFlag);

Mapper映射文件中的sql语句:
<delete id="deletePageNotContainsDetail">
	  delete from 
	        HJ_MDM_DM_DS_DETAIL d 
	  where  
	     d.invalid_flag = #{invalidFlag} 
         and d.data_ele_id IN
         <foreach collection="pageNotContainsList" item="dataEleId"  separator="," 
                                open="(" close=")">
		         #{dataEleId}
		    </foreach>
</delete>

 

Published 77 original articles · won praise 12 · views 120 000 +

Guess you like

Origin blog.csdn.net/qq_29883183/article/details/104014657