问题背景
- ListToString一般用于例如像idList,转换成
where xxx in(idListStr)
的情况。 - MapToString一般用于例如像微信签名的时候,转换成
&xxx=1&xxxx=2&xxxxx=3
的情况
MapToString
把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
/**
* 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
* @author zhengk
*/
public static String createSignString(Map<String, String> params) {
List<String> keys = new ArrayList<String>(params.keySet());
Collections.sort(keys);
String prestr = "";
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i);
String value = params.get(key);
if("sign".equals(key)){
//sign不参与签名
}else if (i == keys.size() - 1) {// 拼接时,不包括最后一个&字符
prestr = prestr + key + "=" + value;
} else {
prestr = prestr + key + "=" + value + "&";
}
}
return prestr;
}
例如params包含{"a":"1","c":"2","b":"3"}
,则输出为a=1&b=3&c=2
(排序+拼接)
ListToString
把List所有元素转化为以,
逗号隔开且'
包围的字符串的方法,可用于sql的in拼接
/**
* 把List所有元素转化为以`,`逗号隔开且`'`包围的字符串的方法,可用于sql的in拼接
* @author zhengk
*/
private static String list2str(List list){
String listStr="";
for (int i = 0; i < list.size(); i++) {
String value = list.get(i)+"";
if(StringUtils.isBlank(value)){
//空值不参与
}else if (i == list.size() - 1) {// 拼接时,不包括最后一个&字符
listStr=listStr+" '"+value+"'";
} else {
listStr=listStr+" '"+value+"',";
}
}
return listStr;
}
假设传入的liList包含的元素为[ay2wbNP=
,aNONO=
,NferuW=
]
/*dialect*/ update t_mm_plannedorder t set t.cfplantype='additionalPlan' where t.fid in ( 'ay2wbNP=', 'aNONO=', 'NferuW=')