From 38d01228075244cec9f3d85c3c0ba85367a6aae9 Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Wed, 05 Sep 2018 14:20:46 +0800 Subject: [PATCH] EquDeviceAdapter 更新 --- src/main/java/com/moral/common/util/ExampleUtil.java | 126 +++++++++++++++++++++-------------------- 1 files changed, 65 insertions(+), 61 deletions(-) diff --git a/src/main/java/com/moral/common/util/ExampleUtil.java b/src/main/java/com/moral/common/util/ExampleUtil.java index f5f929c..e315408 100644 --- a/src/main/java/com/moral/common/util/ExampleUtil.java +++ b/src/main/java/com/moral/common/util/ExampleUtil.java @@ -5,6 +5,7 @@ import lombok.extern.log4j.Log4j; import tk.mybatis.mapper.entity.Example; +import javax.validation.constraints.NotNull; import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; @@ -59,40 +60,7 @@ } if(!StringUtils.isNullOrEmpty(params)){ params = URLDecoder.decode(params, "UTF-8"); - if (params.startsWith(OR)) { - String[] criteria = params.trim().split(OR_SPLIT); - for (String criterion : criteria) { - // criterion���null���""������ - if(StringUtils.isNullOrEmpty(criterion)) { continue;}; - Example.Criteria criteriaOfExample = example.or(); - if (!StringUtils.isNullOrEmpty(criterion)) { - String[] conditions = criterion.trim().split(CRITERIA_SPLIT); - for (String condition : conditions) { - if (!StringUtils.isNullOrEmpty(condition)) { - String[] conditionItems = condition.split(CONDITION_SPLIT); - if (conditionItems != null && conditionItems.length > 1) { - //��������� - String methodName = conditionItems[0]; - //��������� - String propertyName = conditionItems[1]; - //������������ - List values = new ArrayList<Object>(); - if (conditionItems.length > 2) { - for (int index = 2; index < conditionItems.length; index++) { - values.add(conditionItems[index]); - } - } - Method method = getExampleMethod(methodName,values.size()+1); - if (method != null && (methodName.equals("andCondition")||isPropertyOfClass(clazz, propertyName))) { - invokeMethod(criteriaOfExample,method,propertyName,values); - } - - } - } - } - } - } - } + loadCriterias(example,params); } if(!isDelete) { addDeletesToExample(example,clazz); @@ -103,34 +71,67 @@ } return example; } - - private static void invokeMethod(Object obj, Method method,String propertyName,List values) throws InvocationTargetException, IllegalAccessException { - int len = values.size(); - switch (len) { - case 0: - if(method.getParameterCount()==1) { - method.invoke(obj, propertyName); - } - break; - case 1: - - if(method.getParameterCount()==2){ - method.invoke(obj,propertyName,values.get(0)); - } - break; - //between ������ - case 2: - if(method.getParameterCount()==3){ - method.invoke(obj,propertyName,values.toArray()); - } - break; - //in ������ - default: - if(method.getParameterCount()==2){ - method.invoke(obj,propertyName,values); - } - break; + private static void loadCriterias(Example example,String params) throws InvocationTargetException, IllegalAccessException { + if (params.startsWith(OR)) { + String[] criteria = params.trim().split(OR_SPLIT); + for (String criterion : criteria) { + // criterion���null���""������ + if(StringUtils.isNullOrEmpty(criterion)) { continue;}; + Example.Criteria criteriaOfExample = example.or(); + loadConditions(example,criteriaOfExample,criterion); + } } + } + private static void loadConditions(Example example,Example.Criteria criteriaOfExample,String criterion) throws InvocationTargetException, IllegalAccessException { + String[] conditions = criterion.trim().split(CRITERIA_SPLIT); + for (String condition : conditions) { + if (!StringUtils.isNullOrEmpty(condition)) { + String[] conditionItems = condition.split(CONDITION_SPLIT); + if (conditionItems != null && conditionItems.length > 1) { + //��������� + String methodName = conditionItems[0]; + //��������� + String propertyName = conditionItems[1]; + //������������ + List values = new ArrayList<Object>(); + if (conditionItems.length > 2) { + for (int index = 2; index < conditionItems.length; index++) { + values.add(conditionItems[index]); + } + } + Method method = getExampleMethod(methodName,values.size()+1); + if (method != null && (methodName.equals("andCondition")||isPropertyOfClass(example.getEntityClass(), propertyName))) { + invokeMethod(criteriaOfExample,method,propertyName,values); + } else { + log.warn(condition+" can't be executed as condition"); + } + } + } + } + } + private static boolean validatetParameters(@NotNull Method method,int len) { + //������������propertyName���������string������ + return method.getParameterCount() == (len+1) && method.getParameterTypes()[0].equals(String.class); + } + private static void invokeMethod(@NotNull Object obj,@NotNull Method method,@NotNull String propertyName,@NotNull List values) throws InvocationTargetException, IllegalAccessException { + int len = values.size(); + switch (len) { + case 0: + method.invoke(obj, propertyName); + break; + case 1: + Object value = values.get(0) == "null" ? null : values.get(0); + method.invoke(obj, propertyName,value); + break; + //between ������ + case 2: + method.invoke(obj, propertyName, values.toArray()); + break; + //in ������ + default: + method.invoke(obj, propertyName, values); + break; + } } ; @@ -180,6 +181,9 @@ } } } + if(methodTemp==null || validatetParameters(methodTemp,paramCount)){ + return null; + } return methodTemp; } } -- Gitblit v1.8.0