public Boolean batchOperationPublic(List<String> rule, String tableName, List<Map<String, Object>> allData) throws Exception {
//rule 更新的条件字段
//tableName 更新的表名
//allData结果集
//取结果集的第一条数据的字段
Set<String> allColum = allData.get(0).keySet();
//取条件字段和第一条数据的字段的差集
List<String> updateColumns = (List<String>) CollectionUtils.subtract(allColum, rule);
//拼接sql
String q = "";
for (String uColum : updateColumns) {
q = q + "`" + uColum + "` =case ";
for (Map<String, Object> data : allData) {
q = q + " when ";
Integer i = 0;
for (String item : rule) {
if (i == 0) {
q = q + item + "= '" + data.get(item) + "' ";
} else {
q = q + " and " + item + "= '" + data.get(item) + "' ";
}
i++;
}
if (data.get(uColum) != null) {
q = q + " then '" + data.get(uColum) + "' ";
} else {
q = q + " then null ";
}
}
q = q + " else `" + uColum + "` end, ";
}
q = q.substring(0, q.length() - 2);
try {
batchOperationDao.updateBatchByColumns(tableName, q);
return true;
} catch (ParseException e) {
return false;
}