@Override public Optional<Sql> compute(Method method , Neo4jDaoInfo neo4jDaoInfo , Object... values) { final MethodKey key = new MethodKey(); key.setMethodName(method.getName()); key.setParameTypes(method.getParameterTypes()); SqlMethod sqlMethod = neo4jDaoInfo.getSqlMethods().get(key); String sql = sqlMethod.getSql(); if(StringOperation.isTrimEmptyOrNull(sql)) return next.compute(method , neo4jDaoInfo , values); SqlMethodParam[] sqlMethodParams = sqlMethod.getSqlMethodParams(); Map<String , Object> params = new HashMap<>(); Pageable<?> pageable = null; for(int i=0; i<sqlMethodParams.length; i++) { String paramKey; Param param = sqlMethodParams[i].getParam(); if(param != null) paramKey = param.value(); else paramKey = sqlMethodParams[i].getNativeName(); Object value = values[i]; params.put(paramKey , value); if(value instanceof Pageable) pageable = (Pageable<?>) value; } if(SqlComputes.isPageReturn(sqlMethod) && pageable != null) sql = sql + SqlComputes.pageable(pageable); return sqlFormatter.format(sql , params); }
SqlMethodParam[] sqlMethodParams = new SqlMethodParam[paramNames.length]; for(int i=0; i<paramNames.length; i++) { SqlMethodParam item = new SqlMethodParam(); sqlMethodParams[i] = item; item.setNativeName(paramNames[i]); item.setDefinition(parameters[i]); item.setParam(parameters[i].getAnnotation(Param.class)); item.setTypeInfo(parameterTypesInfo.get(i));
String.format("If parameter number big than one then all of them should configure @Param in %s#%s" , clipMethod.getDeclaringClass().getName(), clipMethod.getName())); Param mParam = sqlMethodParams[i].getParam(); if(mParam == null && sqlMethodParams.length > 1) throw new IllegalConfigException( String.format("If parameter number big than one then all of them should configure @Param in %s#%s", method.getDeclaringClass().getName(), method.getName())); if(mParam == null && sqlMethodParams.length == 1) { if(Objects.equals(param.value(), sqlMethodParams[i].getNativeName())) clipValues[i] = values[0];