【fix sonar】QueryGenerator文件
This commit is contained in:
+50
-43
@@ -115,17 +115,21 @@ public class QueryGenerator {
|
||||
*/
|
||||
|
||||
//区间条件组装 模糊查询 高级查询组装 简单排序 权限查询
|
||||
PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(searchObj);
|
||||
PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(searchObj);
|
||||
Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
|
||||
|
||||
//权限规则自定义SQL表达式
|
||||
for (String c : ruleMap.keySet()) {
|
||||
for (Map.Entry<String,SysPermissionDataRuleModel> entry : ruleMap.entrySet()) {
|
||||
String c = entry.getKey();
|
||||
SysPermissionDataRuleModel sysPermissionDataRuleModel = entry.getValue();
|
||||
if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
|
||||
queryWrapper.and(i ->i.apply(getSqlRuleValue(ruleMap.get(c).getRuleValue())));
|
||||
queryWrapper.and(i ->i.apply(getSqlRuleValue(sysPermissionDataRuleModel.getRuleValue())));
|
||||
}
|
||||
}
|
||||
|
||||
String name, type, column;
|
||||
String name;
|
||||
String type;
|
||||
String column;
|
||||
// update-begin--Author:taoyan Date:20200923 for:issues/1671 如果字段加注解了@TableField(exist = false),不走DB查询-------
|
||||
//定义实体字段和数据库字段名称的映射 高级查询中 只能获取实体字段 如果设置TableField注解 那么查询条件会出问题
|
||||
Map<String,String> fieldColumnMap = new HashMap<>();
|
||||
@@ -204,7 +208,8 @@ public class QueryGenerator {
|
||||
*/
|
||||
private static void doIntervalQuery(QueryWrapper<?> queryWrapper, Map<String, String[]> parameterMap, String type, String filedName, String columnName) throws ParseException {
|
||||
// 添加 判断是否有区间值
|
||||
String endValue = null,beginValue = null;
|
||||
String endValue;
|
||||
String beginValue;
|
||||
if (parameterMap != null && parameterMap.containsKey(filedName + BEGIN)) {
|
||||
beginValue = parameterMap.get(filedName + BEGIN)[0].trim();
|
||||
addQueryByRule(queryWrapper, columnName, type, beginValue, QueryRuleEnum.GE);
|
||||
@@ -223,7 +228,8 @@ public class QueryGenerator {
|
||||
|
||||
//多字段排序
|
||||
public static void doMultiFieldsOrder(QueryWrapper<?> queryWrapper,Map<String, String[]> parameterMap) {
|
||||
String column=null,order=null;
|
||||
String column=null;
|
||||
String order=null;
|
||||
if(parameterMap!=null&& parameterMap.containsKey(ORDER_COLUMN)) {
|
||||
column = parameterMap.get(ORDER_COLUMN)[0];
|
||||
}
|
||||
@@ -329,16 +335,12 @@ public class QueryGenerator {
|
||||
//update-begin--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284-------------------
|
||||
//TODO 此处规则,只适用于 le lt ge gt
|
||||
// step 2 .>= =<
|
||||
if (rule == null && val.length() >= 3) {
|
||||
if(QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))){
|
||||
rule = QueryRuleEnum.getByValue(val.substring(0, 2));
|
||||
}
|
||||
if (val.length() >= 3 && QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))) {
|
||||
rule = QueryRuleEnum.getByValue(val.substring(0, 2));
|
||||
}
|
||||
// step 1 .> <
|
||||
if (rule == null && val.length() >= 2) {
|
||||
if(QUERY_SEPARATE_KEYWORD.equals(val.substring(1, 2))){
|
||||
rule = QueryRuleEnum.getByValue(val.substring(0, 1));
|
||||
}
|
||||
if (rule == null && val.length() >= 2 && QUERY_SEPARATE_KEYWORD.equals(val.substring(1, 2))) {
|
||||
rule = QueryRuleEnum.getByValue(val.substring(0, 1));
|
||||
}
|
||||
//update-end--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284---------------------
|
||||
|
||||
@@ -608,7 +610,7 @@ public class QueryGenerator {
|
||||
|
||||
private static void addRuleToQueryWrapper(SysPermissionDataRuleModel dataRule, String name, Class propertyType, QueryWrapper<?> queryWrapper) {
|
||||
QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions());
|
||||
if(rule.equals(QueryRuleEnum.IN) && ! propertyType.equals(String.class)) {
|
||||
if(QueryRuleEnum.IN.equals(rule) && ! propertyType.equals(String.class)) {
|
||||
String[] values = dataRule.getRuleValue().split(",");
|
||||
Object[] objs = new Object[values.length];
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
@@ -659,9 +661,9 @@ public class QueryGenerator {
|
||||
public static String getSqlRuleValue(String sqlRule){
|
||||
try {
|
||||
Set<String> varParams = getSqlRuleParams(sqlRule);
|
||||
for(String var:varParams){
|
||||
String tempValue = converRuleValue(var);
|
||||
sqlRule = sqlRule.replace("#{"+var+"}",tempValue);
|
||||
for(String str:varParams){
|
||||
String tempValue = converRuleValue(str);
|
||||
sqlRule = sqlRule.replace("#{"+str+"}",tempValue);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
@@ -682,8 +684,8 @@ public class QueryGenerator {
|
||||
Pattern p = Pattern.compile(regex);
|
||||
Matcher m = p.matcher(sql);
|
||||
while(m.find()){
|
||||
String var = m.group();
|
||||
varParams.add(var.substring(var.indexOf("{")+1,var.indexOf("}")));
|
||||
String str = m.group();
|
||||
varParams.add(str.substring(str.indexOf("{")+1,str.indexOf("}")));
|
||||
}
|
||||
return varParams;
|
||||
}
|
||||
@@ -826,7 +828,7 @@ public class QueryGenerator {
|
||||
|
||||
private static String getInConditionValue(Object value,boolean isString) {
|
||||
if(isString) {
|
||||
String temp[] = value.toString().split(",");
|
||||
String[] temp = value.toString().split(",");
|
||||
StringBuilder res= new StringBuilder();
|
||||
for (String string : temp) {
|
||||
if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
|
||||
@@ -896,14 +898,17 @@ public class QueryGenerator {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
//权限查询
|
||||
Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
|
||||
PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(clazz);
|
||||
String sql_and = " and ";
|
||||
for (String c : ruleMap.keySet()) {
|
||||
PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(clazz);
|
||||
String sqlAnd = " and ";
|
||||
for (Map.Entry<String,SysPermissionDataRuleModel> entry : ruleMap.entrySet()) {
|
||||
String c = entry.getKey();
|
||||
SysPermissionDataRuleModel sysPermissionDataRuleModel = entry.getValue();
|
||||
if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
|
||||
sb.append(sql_and+getSqlRuleValue(ruleMap.get(c).getRuleValue()));
|
||||
sb.append(sqlAnd).append(getSqlRuleValue(sysPermissionDataRuleModel.getRuleValue()));
|
||||
}
|
||||
}
|
||||
String name, column;
|
||||
String name;
|
||||
String column;
|
||||
for (int i = 0; i < origDescriptors.length; i++) {
|
||||
name = origDescriptors[i].getName();
|
||||
if (judgedIsUselessField(name)) {
|
||||
@@ -925,7 +930,7 @@ public class QueryGenerator {
|
||||
value = NumberUtils.parseNumber(dataRule.getRuleValue(),propType);
|
||||
}
|
||||
String filedSql = getSingleSqlByRule(rule, oConvertUtils.camelToUnderline(column), value,isString);
|
||||
sb.append(sql_and+filedSql);
|
||||
sb.append(sqlAnd).append(filedSql);
|
||||
}
|
||||
}
|
||||
log.info("query auth sql is:"+sb.toString());
|
||||
@@ -941,13 +946,16 @@ public class QueryGenerator {
|
||||
public static void installAuthMplus(QueryWrapper<?> queryWrapper,Class<?> clazz) {
|
||||
//权限查询
|
||||
Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
|
||||
PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(clazz);
|
||||
for (String c : ruleMap.keySet()) {
|
||||
PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(clazz);
|
||||
for (Map.Entry<String,SysPermissionDataRuleModel> entry : ruleMap.entrySet()) {
|
||||
String c = entry.getKey();
|
||||
SysPermissionDataRuleModel sysPermissionDataRuleModel = entry.getValue();
|
||||
if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
|
||||
queryWrapper.and(i ->i.apply(getSqlRuleValue(ruleMap.get(c).getRuleValue())));
|
||||
queryWrapper.and(i ->i.apply(getSqlRuleValue(sysPermissionDataRuleModel.getRuleValue())));
|
||||
}
|
||||
}
|
||||
String name, column;
|
||||
String name;
|
||||
String column;
|
||||
for (int i = 0; i < origDescriptors.length; i++) {
|
||||
name = origDescriptors[i].getName();
|
||||
if (judgedIsUselessField(name)) {
|
||||
@@ -980,15 +988,16 @@ public class QueryGenerator {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
//权限查询
|
||||
Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
|
||||
String sql_and = " and ";
|
||||
for (String c : ruleMap.keySet()) {
|
||||
SysPermissionDataRuleModel dataRule = ruleMap.get(c);
|
||||
String sqlAnd = " and ";
|
||||
for (Map.Entry<String,SysPermissionDataRuleModel> entry : ruleMap.entrySet()) {
|
||||
String c = entry.getKey();
|
||||
SysPermissionDataRuleModel dataRule = entry.getValue();
|
||||
String ruleValue = dataRule.getRuleValue();
|
||||
if(oConvertUtils.isEmpty(ruleValue)){
|
||||
continue;
|
||||
}
|
||||
if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
|
||||
sb.append(sql_and+getSqlRuleValue(ruleValue));
|
||||
sb.append(sqlAnd).append(getSqlRuleValue(ruleValue));
|
||||
}else{
|
||||
boolean isString = false;
|
||||
ruleValue = ruleValue.trim();
|
||||
@@ -999,7 +1008,7 @@ public class QueryGenerator {
|
||||
QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions());
|
||||
String value = converRuleValue(ruleValue);
|
||||
String filedSql = getSingleSqlByRule(rule, c, value,isString);
|
||||
sb.append(sql_and+filedSql);
|
||||
sb.append(sqlAnd).append(filedSql);
|
||||
}
|
||||
}
|
||||
log.info("query auth sql is = "+sb.toString());
|
||||
@@ -1028,9 +1037,7 @@ public class QueryGenerator {
|
||||
Field[] fields;
|
||||
do{
|
||||
fields = clazz.getDeclaredFields();
|
||||
for(int i = 0;i<fields.length;i++){
|
||||
list.add(fields[i]);
|
||||
}
|
||||
list.addAll(Arrays.asList(fields));
|
||||
clazz = clazz.getSuperclass();
|
||||
}while(clazz!= Object.class&&clazz!=null);
|
||||
return list;
|
||||
@@ -1058,7 +1065,7 @@ public class QueryGenerator {
|
||||
if (field != null) {
|
||||
TableField tableField = field.getAnnotation(TableField.class);
|
||||
if (tableField != null){
|
||||
if(tableField.exist() == false){
|
||||
if(!tableField.exist()){
|
||||
//如果设置了TableField false 这个字段不需要处理
|
||||
return null;
|
||||
}else{
|
||||
@@ -1084,9 +1091,9 @@ public class QueryGenerator {
|
||||
*/
|
||||
private static String specialStrConvert(String value) {
|
||||
if (DataBaseConstant.DB_TYPE_MYSQL.equals(getDbType())) {
|
||||
String[] special_str = QueryGenerator.LIKE_MYSQL_SPECIAL_STRS.split(",");
|
||||
for (String str : special_str) {
|
||||
if (value.indexOf(str) !=-1) {
|
||||
String[] specialStr = QueryGenerator.LIKE_MYSQL_SPECIAL_STRS.split(",");
|
||||
for (String str : specialStr) {
|
||||
if (value.contains(str)) {
|
||||
value = value.replace(str, "\\" + str);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user