以下是update语句为例:
import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
import org.apache.ibatis.jdbc.SQL;
Long thisDataId =123456L;
SQL sql = new SQL()
.UPDATE(OppConst.OPP_FOLLOW_UP_TABLE)
.SET("name={0},sex={1},nick_name={2},phone={3}")
.WHERE("id = " + thisDataId);
SqlRunner.db(OppFollowUp.class).update(sql.toString(), Arrays.asList("张三","男","张工","10086"));
我的程序代码:
private void executeSql(Long oppId, Map<String, Object> needToUpdateMap) {
if (MapUtil.isNotEmpty(needToUpdateMap)) {
log.info("执行更新商机主表sql开始");
//存放更改的字段的数据
List<Object> dataList = new ArrayList<>();
//存放更改的字段的信息
List<String> setSqlList = new ArrayList<>();
Integer index = 0;
for (String field : needToUpdateMap.keySet()) {
StringBuilder setSql = new StringBuilder();
//将驼峰的字段转为下滑杠格式的数据库字段
String convertCamelToSnakeCase = convertCamelToSnakeCase(field);
setSql.append(convertCamelToSnakeCase);
Object value = needToUpdateMap.get(field);
if (Objects.isNull(value)) {
setSql.append(" = null ");
} else {
setSql.append(" = {").append(index).append("}");
dataList.add(value);
index++;
}
setSqlList.add(setSql.toString());
}
SQL sql = new SQL()
.UPDATE(OppConst.OPP_FOLLOW_UP_TABLE)
.SET(String.join(",", setSqlList))
.WHERE("id = " + oppId);
try {
SqlRunner.db(OppFollowUp.class).update(sql.toString(), dataList.toArray());
} catch (Exception e) {
log.error("更新商机主表异常 ## {}", ExceptionMessageUtils.stackTraceToString(e));
throw new CrmException("更新商机主表异常");
} finally {
log.info("sql:{} 数据:{}", sql.toString(), JSONObject.toJSONString(dataList));
log.info("执行更新商机主表sql结束");
}
}
}