Java中如何傳一個數組作為篩選條件操作資料庫(sql中foreach的使用)。
阿新 • • 發佈:2018-12-12
實現步驟(以多個id作為入參為例):
1.在前端先傳一個str,以逗號作為分隔符,將該str傳遞給後端介面;
2.在後端pojo裡面先定義一個list作為存放變數相關po定義如下:
private List ids;//id的集合
3.然後針對傳入的str進行解析,以split進行擷取,將擷取的值塞到定義的ids
4.Java方法實現如下java程式碼段:
5.針對資料,在mapper.xml進行sql的處理,通過sql的foreach方法進行處理
6.具體前後端實現程式碼如下(包括sql)
前端js:
var str = '12,34,26,79,55'; $.ajax({ //這個地方介面路徑根據自己的情況來寫 url:xx/xx/resertAlertid, type:'POST', dataType:'json', async:false, data:{ "str":str }, success : function(data) { } })
Java程式碼段
@ResponseBody @RequestMapping(value="/resertAlertid") public int resertAlertid(alertmodelPo ipo,HttpServletRequest request,String str){ int res =0; List<Integer> idarr = new ArrayList<Integer>(); String[] getstr = str.split(","); for(int i=0;i<getstr.length;i++){ idarr.add(Integer.parseInt(getstr[i])); } ipo.setIds(idarr); res = service.resertAlertid(ipo); return res; }
Sql執行程式碼mapper.xml(mybatis)
<update id="resertAlertid" parameterType="alertindexPo"> <if test="po.ids != null and po.ids != ''"> update alert_profile_dict set use_flag = 'f' where 1=1 and id in <foreach collection="po.ids" open="(" close=")" item="item" separator=","> #{item} </foreach> </if> </update>
只要以上程式碼,基本所有有關集合條件查詢的都能解決,針對不同型別的就只要改變對應的po型別和解析型別就可以,希望大家有個好心情今天。