Mybatis 中遍歷map 參數中的 list 和 array 屬性


原文:https://blog.csdn.net/liudongdong0909/article/details/51048835

 

問題
在項目有中遇到批量刪除操作時,需要根據兩個屬性去刪除數據,其中一個是類型:type, 另一個是ids:數組形式的id數組。由於在官方文檔中只是簡單的介紹foreach的用法,套用之后進行批量刪除操作:提示遍歷map中的array 屬性是無法獲取值。

解決方案
通過重新閱讀mybatis 3 官方文檔, 查閱CSDN iteye等網站資料。

代碼
controller層

/**
 *[根據附件的類型 type 和 對象ids批量刪除附件信息]
 */
@RequestMapping("/deleteProjectInterimByIds.do")
public void deleteProjectInterimByIds(HttpServletResponse response, 
@RequestParam(value = "ids", required=true)Long[] ids,
@RequestParam(value="type",required=true)Integer type) {
        Map<String, Object> paraMap = new HashMap<String, Object>();
        paraMap.put("type", type);
        paraMap.put("ids", ids);
        int i =  nterimAttService.deleteAttachmentByObjIdsAndType(paraMap);
        System.out.println(i);

dao層

@Override
public int deleteAttachmentByObjIdsAndType(Map<String, Object> paraMap) {
    return this.getSqlSession().delete(NAME_SPACE +"batchDeleteAttByIds", paraMap);
    }

mapper.xml

<–1.取map中的key 為type的值 
2.取map中的key 為ids 的值;Ids 在map中是以數組的形式存在 的,直接標記取出就可以,采用#{des}的方式會出現錯誤;–>

<delete id="batchDeleteAttByIds" parameterType="map">
    delete from project_attachments
    where attachment_type = #{type} and object_id in 
    <foreach collection="ids" open="(" close=")" separator="," item="id">
        #{id}
    </foreach> 
  </delete>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM