Mybatis按順序獲取數據


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需要使用${ }


免責聲明!

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



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