mybatis 多引數 list和String

手殘大帝發表於2016-01-18
百度的過程太殘酷,一個一個試。因為要放兩個引數,需加以區分(多個引數同理)
方法一不建議使用,呼叫時打包引數不直觀,維護成本高,建議方法二,雖然引數多了不好看,但是見文知意。

方法一: dao部分

注意:xml中使用引數需要嚴格匹配map 中put的key

public void deleteBooks(Map<String, Object> map);

map.put("partnerId", 12L);
map.put("templist",list);


方法二: dao部分
注意:利用@param註解時,因為mapper指定了引數名,xml中使用需要嚴格匹配

public void deleteBooks(@Param("partnerId")long partnerId ,@Param("templist")List<CPPartnerBookSet> list);

xml 部分:方法一,方法二相同
<delete id="deleteBooks">
        delete from cp.tbl_cp_partner_books
        where partner_id = #{partnerId}
        and book_id in
        <foreach collection="templist" index="index" item="item" open="(" separator="," close=")">
            #{item.bookId}
        </foreach>

</delete>

特別強調,如果傳值 list ,那麼list 不能為空,簡單說就是確保list中有物件,即使 list.add(null)測試也能過,而 new ArrayList<?>()會報錯,下午噁心到了,左右不過。特地花點時間來記錄,以備不時之需。



相關文章