String resultClassName = attributes.getProperty("resultClass");
resultClassName = vars.typeHandlerFactory.resolveAlias(resultClassName);
Class resultClass = null;
// get parameter and result maps
SelectKeyStatement selectKeyStatement = new SelectKeyStatement();
selectKeyStatement.setSqlMapClient(vars.client);
selectKeyStatement.setId(insertStatement.getId() + "-SelectKey");
selectKeyStatement.setResource(vars.errorCtx.getResource());
selectKeyStatement.setKeyProperty(keyPropName);
try {
if (resultClassName != null) {
vars.errorCtx.setMoreInfo("Check the select key result class.");
resultClass = Resources.classForName(resultClassName);
} else {
Class parameterClass = insertStatement.getParameterClass();
if (keyPropName != null && parameterClass != null) {
resultClass = PROBE.getPropertyTypeForSetter(parameterClass, selectKeyStatement.getKeyProperty());
}
}
} catch (ClassNotFoundException e) {
throw new SqlMapException("Error. Could not set result class. Cause: " + e, e);
}
if (resultClass == null) {
resultClass = Object.class;
}
// process SQL statement, including inline parameter maps
vars.errorCtx.setMoreInfo("Check the select key SQL statement.");
processSqlStatement(node, selectKeyStatement);
BasicResultMap resultMap;
resultMap = new AutoResultMap(vars.client.getDelegate(), false);
resultMap.setId(selectKeyStatement.getId() + "-AutoResultMap");
resultMap.setResultClass(resultClass);
resultMap.setResource(selectKeyStatement.getResource());
selectKeyStatement.setResultMap(resultMap);
vars.errorCtx.setMoreInfo(null);
return selectKeyStatement;
}