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