code: public static JQL buildJQL(final SQLiteModelMethod method, String preparedJql) {
  		Map<JQLDynamicStatementType, String> dynamicReplace = new HashMap<>();
  		final JQL result = new JQL();
  
  		// for each method's parameter
  		forEachParameter(method, new OnMethodParameterListener() {
  
  			@Override
  			public void onMethodParameter(VariableElement item) {
  				if (method.getEntity().getElement().asType().equals(item.asType())) {
  					result.paramBean = item.getSimpleName().toString();
  				}
  			}
  		});
  
  		// defined how jql is defined
  		result.declarationType = JQLDeclarationType.JQL_COMPACT;
  		if (StringUtils.hasText(preparedJql)) {
  			result.declarationType = JQLDeclarationType.JQL_EXPLICIT;
  		}
  
  		if (method.hasAnnotation(BindSqlSelect.class)) {
  			checkFieldsDefinitions(method, BindSqlSelect.class);
  			return buildJQLSelect(method, result, dynamicReplace, preparedJql);
  		} else if (method.hasAnnotation(BindSqlInsert.class)) {
  			checkFieldsDefinitions(method, BindSqlInsert.class);
  			return buildJQLInsert(method, result, preparedJql);
  		} else if (method.hasAnnotation(BindSqlUpdate.class)) {
  			checkFieldsDefinitions(method, BindSqlUpdate.class);
  			return buildJQLUpdate(method, result, dynamicReplace, preparedJql);
  		} else if (method.hasAnnotation(BindSqlDelete.class)) {
  			return buildJQLDelete(method, result, dynamicReplace, preparedJql);
  		}
  
  		return null;
  	}
docs: Builds the JQL.
  
  @param method
  the method
  @param preparedJql
  the prepared jql
  @return the jql