/// <summary> /// 通用分页(适用于MySql数据库) /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public List <T> GetPageDataForMySql <T>() where T : ModelBase { string sql = "ProcPage"; MySqlManager manager = new MySqlManager(sql, System.Data.CommandType.StoredProcedure); manager.CommandTimeout = this.TimeOut; manager.Add("tableName", this.TableName); manager.Add("showField", this.ShowField); manager.Add("whereText", this.WhereText.Replace("-", "")); manager.Add("orderText", this.OrderText); manager.Add("pageSize", this.PageSize); manager.Add("pageIndex", this.PageIndex); manager.AddOutput("dataCount", MySqlDbType.Int32); MySqlDALBase dal = new MySqlDALBase(); dal.sqlHelp.ConnectionString = this.ConnectionString; List <T> list = dal.Select <T>(manager); this.DataCount = int.Parse(manager[manager.Count - 1].Value.ToString()); this.PageCount = (DataCount - 1) / PageSize + 1; return(list); #region MySql分页存储过程 /* * CREATE PROCEDURE ProcPage( * in tableName varchar(20),#表名 * in showField varchar(100),#要显示的列名 * in whereText varchar(500),#where条件(只需要写where后面的语句) * in orderText varchar(500),#排序条件(只需要写order by后面的语句) * in pageSize int,#每一页显示的记录数 * in pageIndex int,#当前页 * out dataCount int#总记录数 * ) * BEGIN * * if (pageSize<1)then * set pageSize=20; * end if; * * if (pageIndex < 1)then * set pageIndex = 1; * end if; * * if(LENGTH(whereText)>0)then * set whereText=CONCAT(' where 1=1 ',whereText); * end if; * * if(LENGTH(orderText)>0)then * set orderText = CONCAT(' ORDER BY ',orderText); * end if; * * set @strsql = CONCAT('select ',showField,' from ',tableName,' ',whereText,' ',orderText,' limit ',pageIndex*pageSize-pageSize,',',pageSize); * * prepare stmtsql from @strsql; * execute stmtsql; * deallocate prepare stmtsql; * * set @strsqlcount=concat('select count(1) as count into @datacount from ',tableName,'',whereText); * prepare stmtsqlcount from @strsqlcount; * execute stmtsqlcount; * deallocate prepare stmtsqlcount; * set datacount=@datacount; * END;*/ #endregion }