-- 必须明确, 批量插入,传参必须是一个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>