1. 程式人生 > >Java中如何傳一個數組作為篩選條件操作資料庫(sql中foreach的使用)。

Java中如何傳一個數組作為篩選條件操作資料庫(sql中foreach的使用)。

實現步驟(以多個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型別和解析型別就可以,希望大家有個好心情今天。