コード例 #1
0
        public static IList <T> FindPagingByCriteria <T>(object finder, string methodName, object[] parameters, int firstResult, int maxResults, string sortExpression)
        {
            MethodInfo methodInfo   = finder.GetType().GetMethod(methodName);
            object     invokeResult = methodInfo.Invoke(finder, parameters);
            IList <T>  result       = new List <T>();

            if (invokeResult is ISQLQuery)
            {
                ISQLQuery query = (ISQLQuery)invokeResult;

                if (firstResult != -1 && maxResults != -1)
                {
                    query.SetFirstResult(firstResult);
                    query.SetMaxResults(maxResults);
                }

                result = query.List <T>();
            }
            else if (invokeResult is IQuery)
            {
                IQuery query = (IQuery)invokeResult;

                if (firstResult != -1 && maxResults != -1)
                {
                    query.SetFirstResult(firstResult);
                    query.SetMaxResults(maxResults);
                }

                result = query.List <T>();
            }
            else if (invokeResult is ICriteria)
            {
                ICriteria criteria = (ICriteria)invokeResult;

                if (!string.IsNullOrEmpty(sortExpression))
                {
                    sortExpression = sortExpression.Trim();
                    if (sortExpression.ToLower().EndsWith(" asc"))
                    {
                        sortExpression = sortExpression.Substring(0, sortExpression.Length - 4);
                        criteria.AddOrder(Order.Asc(sortExpression));
                    }
                    else if (sortExpression.ToLower().EndsWith(" desc"))
                    {
                        sortExpression = sortExpression.Substring(0, sortExpression.Length - 5);
                        criteria.AddOrder(Order.Desc(sortExpression));
                    }
                }

                if (firstResult != -1 && maxResults != -1)
                {
                    criteria.SetFirstResult(firstResult);
                    criteria.SetMaxResults(maxResults);
                }

                result = criteria.List <T>();
            }

            return(result);
        }
コード例 #2
0
        /// <summary>
        /// For Reports
        /// </summary>
        /// <param name="firstResult"></param>
        /// <param name="maxResults"></param>
        /// <param name="nativeSQLQuery">Standard SQL Query</param>
        /// <param name="resultTransformer"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public ICollection <T> FindAll(string sqlQuery, int firstResult, int maxResults, NHibernate.Transform.IResultTransformer resultTransformer, params Parameter[] parameters)
        {
            ISQLQuery query = CreateSQLQuery(sqlQuery, parameters);

            query.SetResultTransformer(resultTransformer);
            query.SetFirstResult(firstResult);
            query.SetMaxResults(maxResults);
            return(query.List <T>());
        }
コード例 #3
0
        public System.Collections.IList QueryBySQL(string sql, object[] values, int pageIndex, int pageSize)
        {
            ISQLQuery query = session.CreateSQLQuery(sql);

            for (int i = 0; i < values.Length; i++)
            {
                query.SetParameter(i, values[i]);
            }
            query.SetFirstResult((pageIndex - 1) * pageSize);
            query.SetMaxResults(pageSize);
            return(query.List());
        }
コード例 #4
0
ファイル: BaseSqlMapDao.cs プロジェクト: qq1141000259/notes
        //2009/07/25 jackter end


        //2009/07/30 jackter add 單一查詢(本地sql)

        /// <summary>
        /// 單一查詢(本地sql)
        /// </summary>
        /// <param name="sql">sql</param>
        /// <returns>結果集</returns>
        public T SelectUniqueNativeSQL <T>(string sql)
        {
            //開啟連結
            ISession session = HibernateHelper.GetCurrentSession();

            try
            {
                //操作訊息
                ISQLQuery sqlQuery = session.CreateSQLQuery(sql);
                //已定義的實體類
                if (typeof(T).FullName.StartsWith("Com.Everunion"))
                {
                    return(sqlQuery.SetMaxResults(1)
                           .SetResultTransformer(Transformers.AliasToBean(typeof(T)))
                           .UniqueResult <T>());
                }
                //其它,如(T=object[])
                else
                {
                    return(sqlQuery.SetMaxResults(1).UniqueResult <T>());
                }
            }
            //拋出例外
            catch (Exception e)
            {
                log.Error("SelectUniqueNativeSQL.sql:" + sql);
                //輸出錯誤
                log.Error("SelectUniqueNativeSQL.error:" + e.ToString());
                throw e;
            }
            finally
            {
                //關閉
                HibernateHelper.CloseSession();
            }
        }
コード例 #5
0
        public System.Collections.IList QueryBySQL(string sql, string[] names, object[] values, int pageIndex, int pageSize)
        {
            if (names.Length != values.Length)
            {
                throw new QueryParameterException("查询参数不匹配!");
            }
            ISQLQuery query = session.CreateSQLQuery(sql);

            for (int i = 0; i < values.Length; i++)
            {
                query.SetParameter(names[i], values[i]);
            }
            query.SetFirstResult((pageIndex - 1) * pageSize);
            query.SetMaxResults(pageSize);
            return(query.List());
        }