### Question:
SqlConfigParseUtils { public static SqlToyResult processSql(String queryStr, String[] paramsNamed, Object[] paramsValue) { if (null == paramsValue || paramsValue.length == 0) { return new SqlToyResult(queryStr, paramsValue); } SqlToyResult sqlToyResult = new SqlToyResult(); boolean isNamedArgs = StringUtil.matches(queryStr, SqlToyConstants.SQL_NAMED_PATTERN); SqlParamsModel sqlParam; String questionMark = "#sqltoy_qsmark_placeholder#"; if (isNamedArgs) { String sql = queryStr.replaceAll(ARG_REGEX, questionMark); sql = processLoop(sql, paramsNamed, paramsValue); sqlParam = processNamedParamsQuery(sql); } else { sqlParam = processNamedParamsQuery(queryStr); } sqlToyResult.setSql(sqlParam.getSql()); sqlToyResult.setParamsValue(matchNamedParam(sqlParam.getParamsName(), paramsNamed, paramsValue)); processNullConditions(sqlToyResult); processBlank(sqlToyResult); processValue(sqlToyResult); processLike(sqlToyResult); processIn(sqlToyResult); replaceNull(sqlToyResult, 0); if (isNamedArgs) { sqlToyResult.setSql(sqlToyResult.getSql().replaceAll(questionMark, ARG_NAME)); } return sqlToyResult; }  static boolean hasNamedParam(String sql); static boolean hasFast(String sql); static boolean hasWith(String sql); static boolean isNamedQuery(String queryStr); static SqlToyResult processSql(String queryStr, String[] paramsNamed, Object[] paramsValue); static Object[] matchNamedParam(String[] sqlParamsName, String[] paramsNameOrder, Object[] paramsValue); static SqlParamsModel processNamedParamsQuery(String queryStr); static String[] getSqlParamsName(String queryStr, boolean distinct); static String[] getNoSqlParamsName(String queryStr, boolean distinct); static String processWhereLinkAnd(String preSql, String markContentSql, String tailSql); static void replaceNull(SqlToyResult sqlToyResult, int afterParamIndex); static SqlToyConfig parseSqlToyConfig(String querySql, String dialect, SqlType sqlType); static void processFastWith(SqlToyConfig sqlToyConfig, String dialect); static Object[] reflectBeanParams(String[] paramsName, Serializable entity,
			ReflectPropertyHandler reflectPropsHandler); final static String SQL_PSEUDO_START_MARK; final static int SQL_PSEUDO_START_MARK_LENGTH; final static String SQL_PSEUDO_END_MARK; final static int SQL_PSEUDO_END_MARK_LENGTH; final static Pattern FAST_PATTERN; final static Pattern IN_PATTERN; final static Pattern LIKE_PATTERN; final static String BLANK_REGEX; final static Pattern BLANK_PATTERN; final static String VALUE_REGEX; final static Pattern VALUE_PATTERN; final static Pattern IF_PATTERN; final static String BLANK; final static Pattern IS_PATTERN; final static String ARG_NAME; final static String ARG_REGEX; final static Pattern ARG_NAME_PATTERN; final static String ARG_NAME_BLANK; final static Pattern WHERE_END_PATTERN; final static Pattern WHERE_ONE_EQUAL_PATTERN; final static Pattern AND_START_PATTERN; final static Pattern OR_START_PATTERN; final static Pattern UPDATE_SET_PATTERN; final static Pattern SQL_ID_PATTERN; }### Answer:
@Test public void testProcessSql() { String sql = FileUtil.readFileAsStr("classpath:scripts/ifScriptSql.sql", "UTF-8"); SqlToyResult result = SqlConfigParseUtils.processSql(sql, new String[] { "id", "name", "status" }, new Object[] { null, "chen", "1" }); System.err.println("id==null:" + JSON.toJSONString(result)); SqlToyResult result1 = SqlConfigParseUtils.processSql(sql, new String[] { "id", "name", "status" }, new Object[] { "1", "chen", "1" }); System.err.println("id<>null:" + JSON.toJSONString(result1)); }