|
@@ -95,6 +95,11 @@ public class MyDbHelper {//目前只差主键的条件优化
|
|
|
: (Objects.nonNull(calcInfo) && Objects.nonNull(calcInfo.get("event"))) ? calcInfo.get("event").toString() //优先算法定义的事件
|
|
|
: (Objects.nonNull(inputData) && Objects.nonNull(inputData.get("event"))) ? inputData.get("event").toString() : null;//否则上传参数的事件
|
|
|
//-----入参检测
|
|
|
+
|
|
|
+ if (Objects.isNull(event) && MapTools.isNotBlank(sqlStr) && sqlStr.toLowerCase().contains(") union")) {
|
|
|
+ event = Objects.toString(calcInfo.get("event"));
|
|
|
+ }
|
|
|
+
|
|
|
if (MapTools.isBlank(event) || (MapTools.isBlank(tableName) && MapTools.isBlank(sqlStr))) {//如果表名为空 且SQL为空则返回错误
|
|
|
return processFail("generalProcess函数: 表为空且SQL为空或事件为空", null, inParams);
|
|
|
}
|
|
@@ -253,7 +258,7 @@ public class MyDbHelper {//目前只差主键的条件优化
|
|
|
/*标准化SQL*/
|
|
|
private String standarSQLStr(String sqlStr) {
|
|
|
String newSqlStr = sqlStr;
|
|
|
- String[] sqlKeyWordList = "select,from,where,group by,limit,order by".split(",",-1);
|
|
|
+ String[] sqlKeyWordList = "select,from,where,group by,limit,order by".split(",", -1);
|
|
|
for (String sqlKeyWord : sqlKeyWordList) {//循环进行替换
|
|
|
Pattern p = Pattern.compile(sqlKeyWord, Pattern.CASE_INSENSITIVE);
|
|
|
Matcher m = p.matcher(newSqlStr);
|
|
@@ -285,10 +290,10 @@ public class MyDbHelper {//目前只差主键的条件优化
|
|
|
HashMap<String, Object> tempMap = new HashMap<>();
|
|
|
String columnName = rsd.getColumnName(i + 1);
|
|
|
String columnLabel = rsd.getColumnLabel(i + 1);
|
|
|
- tempMap.put("columnName",Objects.isNull(columnLabel)? columnName:columnLabel);
|
|
|
+ tempMap.put("columnName", Objects.isNull(columnLabel) ? columnName : columnLabel);
|
|
|
tempMap.put("columnType", rsd.getColumnType(i + 1));
|
|
|
tempMap.put("columnTypeName", rsd.getColumnTypeName(i + 1));
|
|
|
- tempMap.put("columnLable",Objects.isNull(columnLabel)? columnName:columnLabel );
|
|
|
+ tempMap.put("columnLable", Objects.isNull(columnLabel) ? columnName : columnLabel);
|
|
|
allColumnList.add(tempMap);
|
|
|
}
|
|
|
return processSuccess(allColumnList);
|
|
@@ -387,7 +392,7 @@ public class MyDbHelper {//目前只差主键的条件优化
|
|
|
|
|
|
//根据sql语句获取表名:查询存在多层多表联合等复杂情况,暂时不支持
|
|
|
private String getTableBySql(String sqlStr) {
|
|
|
- String[] sqlSplit = sqlStr.split("\\s+",-1);//使用空格进行分组
|
|
|
+ String[] sqlSplit = sqlStr.split("\\s+", -1);//使用空格进行分组
|
|
|
return sqlSplit.length < 3 ? null : sqlSplit[0].equals("insert") ? (sqlSplit[2].indexOf("(") > 0 ? sqlSplit[2].substring(0, sqlSplit[2].indexOf("(")) : sqlSplit[2])//insert into 表名(字段名)
|
|
|
: sqlSplit[0].equals("update") ? sqlSplit[1]//update 表名
|
|
|
: sqlSplit[0].equals("delete") ? sqlSplit[2] : null;//delete from 表名
|
|
@@ -460,7 +465,7 @@ public class MyDbHelper {//目前只差主键的条件优化
|
|
|
Object currentVar = valueObj.get(newColumnName);//优先从当前MAP中直接获取
|
|
|
|
|
|
if (columnName.startsWith(":")) {//处理in,只是书名号方式存在
|
|
|
- String[] varSplit = Objects.isNull(currentVar) ? null : currentVar.toString().split(",",-1);//使用逗号进行分组
|
|
|
+ String[] varSplit = Objects.isNull(currentVar) ? null : currentVar.toString().split(",", -1);//使用逗号进行分组
|
|
|
if (Objects.isNull(varSplit)) {//
|
|
|
newSqlStr = newSqlStr.replaceFirst(columnName.concat("?"), "?"); //修订SQL
|
|
|
} else {
|
|
@@ -552,7 +557,6 @@ public class MyDbHelper {//目前只差主键的条件优化
|
|
|
}
|
|
|
|
|
|
//检测数据是否已经存在,使用同步锁(tableName,whereStr,filterList)
|
|
|
-
|
|
|
private synchronized String isExist(String tableName, String whereStr, List<Object> dbFilter) {
|
|
|
String event = "2";//默认为更新
|
|
|
if (!AppConfig.event6Map.containsKey(tableName)) {//如果对应表名未建立缓存则初始化一个
|
|
@@ -565,9 +569,9 @@ public class MyDbHelper {//目前只差主键的条件优化
|
|
|
List<Map<String, Object>> isExistResult = theJdbcTemplate.queryForList("select 1 from ".concat(tableName).concat(" where ").concat(whereStr).concat(" limit 1"), dbFilter.toArray());
|
|
|
event = (isExistResult.size() == 0) ? "1" : event;//数据库不存在则新增
|
|
|
//如果是新增则修订为新增SQL
|
|
|
- if (tableUniqe.size() > 3000){
|
|
|
- tableUniqe.clear();
|
|
|
- }
|
|
|
+ if (tableUniqe.size() > 3000) {
|
|
|
+ tableUniqe.clear();
|
|
|
+ }
|
|
|
tableUniqe.add(oldKey);//无论是新增还是更新都添加到缓存
|
|
|
} catch (Exception e) {//查询失败并不更新缓存
|
|
|
//打印错误即可
|
|
@@ -690,7 +694,7 @@ public class MyDbHelper {//目前只差主键的条件优化
|
|
|
|
|
|
//JDBC更新
|
|
|
public Map<String, Object> JDBCBatch(String sqlStr, List<Object> dbValue, Object signParam) {
|
|
|
- if ((sqlStr.startsWith("update") ||sqlStr.contains("?")) && (dbValue.size() == 0 || (dbValue.get(0) instanceof List<?> list && list.isEmpty()) )) { //要求参数但是参数为空则返回
|
|
|
+ if ((sqlStr.startsWith("update") || sqlStr.contains("?")) && (dbValue.size() == 0 || (dbValue.get(0) instanceof List<?> list && list.isEmpty()))) { //要求参数但是参数为空则返回
|
|
|
return processSuccess(null);
|
|
|
}
|
|
|
Connection connection = null;
|
|
@@ -703,7 +707,7 @@ public class MyDbHelper {//目前只差主键的条件优化
|
|
|
|
|
|
Object[] signdbValue = ((List<Object>) dbValue.get(i)).toArray();
|
|
|
for (int index = 0; index < signdbValue.length; index++) {
|
|
|
- sqlPS.setObject(index + 1,signdbValue[index]);
|
|
|
+ sqlPS.setObject(index + 1, signdbValue[index]);
|
|
|
}
|
|
|
sqlPS.addBatch();
|
|
|
if ((i + 1) % 10 == 0) {
|