Mybatis按顺序获取数据

时间:2023-03-09 00:08:56
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需要使用${ }