springboot項目Mybatis學習之批量插入、循環遍歷

批量插入

 

void batchInsertWorks(@Param("empNo") String empNo, List<Works> worksList);
<insert id="batchInsertWorks" parameterType="java.util.List">
delete from mf_works_schedule where emp_no = #{empNo};
insert into mj_works(id_, emp_no, rest_day, rest_date, update_time)
values
<foreach collection ="worksList" item="item" index= "index" separator =",">
(
#{item.id}, #{item.empNo}, #{item.restDay},#{item.restDate}, now()
)
</foreach >
ON DUPLICATE KEY UPDATE update_time=now();
</insert>

 

  1. 這裏傳遞的參數是List,所有parameterType爲java.util.List

  2. 在<insert>或其他mybatis的標籤中,可以寫多個SQL語句,數據庫會依次執行,記得一個語句結束後用分號結尾

  3. foreach中collection的內容(worksList),就是傳遞的參數的名字

  4. separator表示用兩個對象之間用逗號相隔,即:insert into xxx(column1,column2,column3) values(...), (...), (...)

  5. item就有點像:for(Works item : worksList) { ... }

  6. index在List和數組中,表示元素的序號,在map中,index表示元素的key

IN查詢、刪除

 

List<Order> queryByAppointmentDate(@Param("dateArray") String[] dateArray);
<select id="queryByAppointmentDate" resultMap="xxx.xxx.xxx.Order">
select * from mj_order where appointment_date in
<foreach collection="dateArray" item="item" index="index" open="(" separator="," close=")">
(
#{item}
)
</foreach>
</select>

 

這裏的foreach參數和批量插入類似,多了個open和close,分表表示該語句從什麼時候開始,什麼時候結束

刪除也類似:

 

void deleteEmpRestInfo(@Param("idArray") String[] idArray);
<delete id="deleteEmpRestInfo">
delete from mj_works where id_ in
<foreach collection="idArray" item="item" index="index" open="(" separator="," close=")">
(
#{item}
)
</foreach>
</delete>

 

 批量更新參數傳入的是map寫法

 

/**
     * @Author: Wu
     * @Description: 批量更新
     * @Date:
     */
    @Test
    public  void deleteByUpdates(){
       Map<String,Object> map =new HashMap<>();
       List list=new ArrayList();
       list.add(1);
       list.add(2);
       map.put("status",2);
       map.put("list",list);
       int a= terminalPrivilegesMapper.updateStatus(map);
       System.out.println(a);

 <!--批量更新狀態-->
  <update id="updateStatus" parameterType="java.util.Map">
    UPDATE INFO_TERMINALPRIVILEGES SET STATUS = #{status}
    WHERE ID IN
    <foreach item="item" collection="list" separator="," open="(" close=")">
      #{item,jdbcType=DECIMAL}
    </foreach>
  </update>

 

批量更新傳入參數爲list寫法

 

<!-- 批量邏輯刪除信息 -->
  <update id="logicDeletes" parameterType="list">
    UPDATE INFO_TERMINALTYPE SET DELETED = 1 WHERE ID IN
    <foreach item="item" collection="list" separator="," open="(" close=")">
      #{item,jdbcType=DECIMAL}
    </foreach>
  </update>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章