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); }
/// <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>()); }
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()); }
//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(); } }
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()); }