sql語句select * from producttg where hospitalcode in (1,2,3) 獲取到的數據並不是按照條件1,2,3的順序排列,如果要成下面形式(mybatis語句)
select * from producttg where productno in ${productnolist} order by CHARINDEX(','+ltrim(productno)+',',',${productnostr}')
其中輸入為productnolist(String類型),productnostr(String類型)
productnolist的格式為:(1,2,3) productnostr的格式為:1,2,3,
java中將List轉成上述兩種字符串格式的代碼為:
//拼接成:('00401','01001','00301','02001') public static String ListToString1(List<String> inputlist){ String result="('"; for (int i= 0; i<inputlist.size();i++) { if(i==inputlist.size()-1){ result=result+inputlist.get(i)+"')"; }else{ result=result+inputlist.get(i)+"','"; } } return result; }
//拼接成:00401,01001,00301,02001, public static String ListToString2(List<String> inputlist){ String result =""; for (String item : inputlist) { result =result+item+","; } return result; }
這樣就完成了,按照productno in 多個條件的順序依次查出的需求,注意:mybatis語句中取輸入數據用的是${ },而不是#{ }
1.#{ }可以防止注入,${ }不能防止注入
2.#{ }傳入占位符,${ }傳入字符串
3.order by需要使用${ }