// =============================================================================== // OutsideSql Override // =================== // ------------------------------------------------- // Traditional OutsideSql // ---------------------- protected override void SetupSelectMethodByManual(MethodInfo mi, string sql) { string[] parameterNames = MethodUtil.GetParameterNames(mi); Type[] parameterTypes = MethodUtil.GetParameterTypes(mi); string[] filteredParameterNames = null; Type[] filteredParameterTypes = null; if (parameterTypes != null && parameterTypes.Length > 0 && typeof(CursorHandler).IsAssignableFrom(parameterTypes[parameterTypes.Length - 1])) { filteredParameterNames = new string[parameterTypes.Length - 1]; filteredParameterTypes = new Type[parameterTypes.Length - 1]; for (int i = 0; i < parameterTypes.Length - 1; i++) { filteredParameterNames[i] = parameterNames[i]; filteredParameterTypes[i] = parameterTypes[i]; } } else { filteredParameterNames = parameterNames; filteredParameterTypes = parameterTypes; } IBeanMetaData myMetaData = GetOutsideSqlBeanMetaData(mi, _dbMetaData, _dbms); IDataReaderHandler myDataReaderHandler = CreateDataReaderHandler(mi, myMetaData); RegisterSqlCommand(mi.Name, mi, sql, filteredParameterNames, filteredParameterTypes, myDataReaderHandler); }
// =============================================================================== // ConditionBean Override // ====================== protected override void SetupSelectMethodByAuto(MethodInfo methodInfo) { if (SetupInternalSelectMethodSequenceNextVal(methodInfo)) { return; } // Assert unsupported String query = _annotationReader.GetQuery(methodInfo.Name); AssertQueryAnnotationUnsupported(methodInfo, query); IDataReaderHandler handler = CreateDataReaderHandler(methodInfo); String[] argNames = MethodUtil.GetParameterNames(methodInfo); Type[] argTypes = MethodUtil.GetParameterTypes(methodInfo); SelectDynamicCommand cmd = CreateSelectDynamicCommand(handler); if (argTypes.Length == 1 && ValueTypes.GetValueType(argTypes[0]) == ValueTypes.OBJECT) { argNames = new String[] { "pmb" }; AssertAutoQueryByDtoUnsupported(methodInfo, argTypes); S2DaoSelectDynamicCommand dynamicCommand = CreateCustomizeSelectDynamicCommand(handler); cmd = dynamicCommand; } else { HandleAutoQueryByArgsAnnotationUnsupported(methodInfo, argNames); } cmd.ArgNames = argNames; cmd.ArgTypes = argTypes; _sqlCommands[methodInfo.Name] = cmd; }
protected bool IsFirstArgumentConditionBean(MethodInfo mi) { Type[] pmbTypes = MethodUtil.GetParameterTypes(mi); return(pmbTypes.Length > 0 && typeof(ConditionBean).IsAssignableFrom(pmbTypes[0])); }