mybatis接收以逗号分隔的字符串批量查询⽅式
⽬录
接收以逗号分隔的字符串批量查询
如何相互转换逗号分隔的字符串和List
将逗号分隔的字符串转换为List
将List转换为逗号分隔符
接收以逗号分隔的字符串批量查询
<IF test = " supplierIds !=null and supplierIds.indexOf(',') != -1  ">
AND msd.supplier_id NOT IN
<foreach collection = "supplierIds.split(',')" item = "item"
OPEN = "(" SEPARATOR = "," CLOSE = ")">
#{item}
</foreach>
</IF>
<IF test = "supplierIds !=null and supplierIds.indexOf(',') == -1">
AND msd.supplier_id != #{supplierIds}
</IF>
直接粘贴进去,上⾯部分实现循环查询,下⾯是针对单个字符的补充(因为单个字符不存在逗号)
如何相互转换逗号分隔的字符串和List
如果程序员想实现某种功能,有两条路可以⾛。⼀条就是⾃⼰实现,⼀条就是调⽤别⼈的实现,别⼈的实现就是所谓的API。⽽且⼤多数情况下,好多“别⼈”都实现了这个功能。程序员有不得不在这其中选择。⼤部分情况下,程序员就会知道哪个⽤哪个,先看到哪个⽤哪个。到最后,在实际项⽬中,同样的功能会调⽤五花⼋门的API。我在公司的项⽬中就看到了这种情况。其实,也⽆可厚⾮,我相信好多项
⽬都是这个样⼦。我们不可能要求程序员都⽤同⼀种⽅法。程序员可能会有不同的好恶。为了让程序员能快乐⾃由地编程,就随他去吧!因为程序员感觉⾃由的时候,感觉快乐的时候,正是他们⽣产⼒最⾼的时候。
不扯淡了。回归正题,到底这些不同的实现⽅法或者API真的就没有⾼低贵贱之分?以我遇到这个逗号分隔字符串转List为例,探讨探讨:
注:下⾯的代码并不能保证能运⾏,可能需要稍微的修改。
将逗号分隔的字符串转换为List
⽅法 1:利⽤JDK的Arrays类
String str = "a,b,c";
List<String> result = Arrays.asList(str.split(","));
⽅法2:利⽤Guava的Splitter
String str = "a, b, c";
List<String> result = (",").trimResults().splitToList(str);
⽅法3:利⽤Apache Commons的StringUtils (只是⽤了split)
String str = "a,b,c";
List<String> result = Arrays.asList(StringUtils.split(str,","));
⽅法4:利⽤Spring Framework的StringUtils
String str = "a,b,c";
List<String> str = Arrays.asList(StringUtilsmaDelimitedListToStringArray(str));
将List转换为逗号分隔符
⽅法 1:利⽤JDK(好像没有很好的⽅法,需要⼀步⼀步实现)
NA
⽅法2:利⽤Guava的Joiner
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
String str = (",").join(list);
⽅法3:利⽤Apache Commons的StringUtils
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
String str = StringUtils.Array(), ",");
⽅法4:利⽤Spring Framework的StringUtils
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
String str = llectionToDelimitedString(list, ",");
⽐较下来,我的观点就是Guava库更灵活,适⽤⾯更⼴。项⽬中如果没有引⼊Guava的话,那就加上它。  //拼接所有字符串
public String getAllIdByUserMobile( List<String> userMobile) throws Exception {
StringBuilder userMobileIdString = new StringBuilder();
//拼接字符串 userMobile productId
if( userMobile.size() <= 0){
return "";
}else{
for(String item:userMobile){
字符串截取逗号前面的userMobileIdString.append(item + ",");
}
return org.apachemons.String(), ",");
}
}
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。