在工作当中,我们经常会碰到批量操作的时候。在批量操作时,书写mapper.xml文件当中的sql语句时,经常会用到 foreach。首先说批量删除,因为这也是自己刚刚用了的一个。在这里只说mapper.xml和mapper.java。来吧,直接上个简单的例子~
一个表table当中的数据改变了,然后我们需要修改其中的数据,前提是我们的这个表与其他表还有关联,而我们得到的前端传过来的数据优势一个整体,其中还包含着两个表之间的关系(对应一个表,数据并不是一条一条的给我们,而是直接整体扔给我们,其中包含了每个表中的多条数据,以及每条数据与另一个表中的每条数据之间的关系),这时候想删除整个表中ID未改变的数据。操作如下:
mapper.xml文件:
<delete id="deletelist" parameterType="java.util.List"> DELETE FROM TABLE1 WHERE ID NOT IN ( SELECT A.ID FROM ( <foreach collection="data" item="item" separator="UNION All"> SELECT * FROM TABLE1 WHERE ID = #{item.id} </foreach> )A ) </delete>
mapper.Java:
Integer deleteUsers(@Param("data") List<User> userList);