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