// =============================================================================== // Constructor // =========== public S2DaoSelectDynamicCommand(IDataSource dataSource, ICommandFactory commandFactory , IDataReaderHandler dataReaderHandler, IDataReaderFactory dataReaderFactory) : base(dataSource, commandFactory, dataReaderHandler, dataReaderFactory) { this.dataReaderHandler = dataReaderHandler; this.dataReaderFactory = dataReaderFactory; }
// ------------------------------------------------- // OutsideSql Execute // ------------------ protected Object ExecuteOutsideSqlAsStatic(Object[] args, OutsideSqlContext outsideSqlContext) { // - - - - - - - - - - - - - - - - - // Find specified resultSetHandler. // - - - - - - - - - - - - - - - - - IDataReaderHandler specifiedDataReaderHandler = FindSpecifiedDataReaderHandler(args); // - - - - - - - - - // Filter arguments. // - - - - - - - - - Object[] filteredArgs; if (outsideSqlContext.IsSpecifiedOutsideSql) { Object parameterBean = outsideSqlContext.ParameterBean; filteredArgs = new Object[] { parameterBean }; } else { filteredArgs = FilterArgumentsForDataReaderHandler(args); } ICommandContext ctx = Apply(filteredArgs); InternalBasicSelectHandler selectHandler = CreateBasicSelectHandler(ctx.Sql, specifiedDataReaderHandler); Object[] bindVariableArray = ctx.BindVariables; selectHandler.LoggingMessageSqlArgs = bindVariableArray; return(selectHandler.Execute(bindVariableArray, ctx.BindVariableTypes)); }
// =============================================================================== // Constructor // =========== public InternalProcedureHandler(IDataSource dataSource, String sql, IDataReaderHandler dataReaderHandler, ICommandFactory commandFactory, IDataReaderFactory dataReaderFactory, InternalProcedureMetaData procedureMetaData) : base(dataSource, sql, dataReaderHandler, commandFactory, dataReaderFactory) { this._procedureMetaData = procedureMetaData; }
// =============================================================================== // 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; }
public async Task <IResultSets> ExecuteReaderAsync(IDbCommand command, IDataReaderHandler handler, CancellationToken cancellationToken = default(CancellationToken)) { using (var reader = await((MySqlCommand)command).ExecuteReaderAsync(cancellationToken).ConfigureAwait(false)) { return(handler.Handle(new OptimizedDataReader(reader))); } }
// =============================================================================== // Constructor // =========== public InternalProcedureCommand(IDataSource dataSource, IDataReaderHandler dataReaderHandler, ICommandFactory commandFactory, IDataReaderFactory dataReaderFactory, InternalProcedureMetaData procedureMetaData) { this._dataSource = dataSource; this._dataReaderHandler = dataReaderHandler; this._commandFactory = commandFactory; this._dataReaderFactory = dataReaderFactory; this._procedureMetaData = procedureMetaData; }
// =============================================================================== // Constructor // =========== public InternalBasicSelectHandler(IDataSource dataSource , String sql , IDataReaderHandler dataReaderHandler , ICommandFactory commandFactory , IDataReaderFactory dataReaderFactory) : base(dataSource, sql, commandFactory) { DataReaderHandler = dataReaderHandler; DataReaderFactory = dataReaderFactory; }
private void addHandler(IDataReaderHandler handler) { if (_handlers.Any()) { _handlers.Add(new DataReaderAdvancer(handler)); } else { _handlers.Add(handler); } }
// ------------------------------------------------- // Default Execute // --------------- protected virtual object ExecuteDefault(object[] args) { // - - - - - - - - - - - - - - - - - // Find specified resultSetHandler. // - - - - - - - - - - - - - - - - - IDataReaderHandler specifiedDataReaderHandler = FindSpecifiedDataReaderHandler(args); // - - - - - - - - - // Filter arguments. // - - - - - - - - - Object[] filteredArgs = FilterArgumentsForDataReaderHandler(args); ICommandContext ctx = Apply(filteredArgs); InternalBasicSelectHandler selectHandler = CreateBasicSelectHandler(ctx.Sql, specifiedDataReaderHandler); Object[] bindVariableArray = ctx.BindVariables; selectHandler.LoggingMessageSqlArgs = bindVariableArray; return(selectHandler.Execute(bindVariableArray, ctx.BindVariableTypes)); }
public async Task <IResultSets> ExecuteReaderAsync(IDbCommand dbCommand, IDataReaderHandler handler, CancellationToken cancellationToken = default(CancellationToken)) { await PrepareCommand(dbCommand); return(await DbClient.CommandExecutor.ExecuteReaderAsync(dbCommand, handler, cancellationToken).ConfigureAwait(false)); }
public DataReaderAdvancer(IDataReaderHandler inner) { _inner = inner; }
protected void RegisterSqlCommand(String sqlCommandKey, MethodInfo method, String sql, String[] argNames, Type[] argTypes, IDataReaderHandler myDataReaderHandler) { SelectDynamicCommand cmd = CreateSelectDynamicCommand(myDataReaderHandler); RegisterSqlCommand(sqlCommandKey, method, sql, argNames, argTypes, cmd); }
// =============================================================================== // Extension Override // ================== protected override SelectDynamicCommand CreateSelectDynamicCommand(IDataReaderHandler handler) { return(CreateCustomizeSelectDynamicCommand(handler)); }
protected InternalBasicSelectHandler CreateBasicSelectHandler(String realSql, IDataReaderHandler specifiedDataReaderHandler) { return(new InternalBasicSelectHandler(DataSource, realSql, specifiedDataReaderHandler, CommandFactory, dataReaderFactory)); }
protected Object ExecuteOutsideSqlAsDynamic(Object[] args, OutsideSqlContext outsideSqlContext) { Object firstArg = args[0]; PropertyInfo[] properties = firstArg.GetType().GetProperties(); String filteredSql = this.Sql; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Resolve embedded comment for parsing bind variable comment in embedded comment. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - for (int i = 0; i < properties.Length; i++) { PropertyInfo propertyInfo = properties[i]; Type propertyType = propertyInfo.PropertyType; if (!propertyType.Equals(typeof(String))) { continue; } String outsideSqlPiece = (String)propertyInfo.GetValue(firstArg, null); if (outsideSqlPiece == null) { continue; } String embeddedComment = "/*$pmb." + propertyInfo.Name + "*/"; filteredSql = filteredSql.Replace(embeddedComment, outsideSqlPiece); } S2DaoSelectDynamicCommand outsideSqlCommand = CreateMySelectDynamicCommand(); outsideSqlCommand.ArgNames = ArgNames; outsideSqlCommand.ArgTypes = ArgTypes; outsideSqlCommand.Sql = filteredSql; // - - - - - - - - - - - - - - - - - // Find specified resultSetHandler. // - - - - - - - - - - - - - - - - - IDataReaderHandler specifiedDataReaderHandler = FindSpecifiedDataReaderHandler(args); // - - - - - - - - - // Filter arguments. // - - - - - - - - - Object[] filteredArgs; if (outsideSqlContext.IsSpecifiedOutsideSql) { Object parameterBean = outsideSqlContext.ParameterBean; filteredArgs = new Object[] { parameterBean }; } else { filteredArgs = FilterArgumentsForDataReaderHandler(args); } ICommandContext ctx = outsideSqlCommand.DoApply(filteredArgs); IList <Object> bindVariableList = new System.Collections.Generic.List <Object>(); IList <Type> bindVariableTypeList = new System.Collections.Generic.List <Type>(); IList <String> bindVariableNameList = new System.Collections.Generic.List <String>(); AddBindVariableInfo(ctx, bindVariableList, bindVariableTypeList, bindVariableNameList); InternalBasicSelectHandler selectHandler = CreateBasicSelectHandler(ctx.Sql, specifiedDataReaderHandler); Object[] bindVariableArray = new Object[bindVariableList.Count]; bindVariableList.CopyTo(bindVariableArray, 0); Type[] bindVariableTypeArray = new Type[bindVariableTypeList.Count]; bindVariableTypeList.CopyTo(bindVariableTypeArray, 0); String[] bindVariableNameArray = new String[bindVariableNameList.Count]; bindVariableNameList.CopyTo(bindVariableNameArray, 0); selectHandler.LoggingMessageSqlArgs = bindVariableArray; return(selectHandler.Execute(bindVariableArray, bindVariableTypeArray, bindVariableNameArray)); }
protected virtual S2DaoSelectDynamicCommand CreateCustomizeSelectDynamicCommand(IDataReaderHandler handler) { FetchNarrowingResultSetFactory customizeResultSetFactory = new FetchNarrowingResultSetFactory(); return(new S2DaoSelectDynamicCommand(_dataSource, _commandFactory, handler, customizeResultSetFactory)); }