QueryHelp

  1 //辅助查询 Author:高兵兵
  2 public class QueryHelp
  3 {
  4     #region IList<T> ToList<T>(string cmdText,string connString) where T : new()
  5     /// <summary>
  6     /// 返回一个list
  7     /// </summary>
  8     /// <typeparam name="T">实体模型</typeparam>
  9     /// <param name="cmdText">存储过程名</param>
 10     /// <param name="connString">连接字符串</param>
 11     /// <returns></returns>
 12     public static IList<T> ToList<T>(string cmdText, string connString) where T : new()
 13     {
 14         using (var read = DbHelp.Create().ExecuteDataReader(cmdText, connString))
 15         {
 16             IList<T> list = null;
 17             var type = typeof(T);
 18             if (read.HasRows)
 19             {
 20
 21                 list = new List<T>();
 22             }
 23             while (read.Read())
 24             {
 25                 T t = new T();
 26                 foreach (PropertyInfo item in type.GetProperties())
 27                 {
 28                     for (int i = 0; i < read.FieldCount; i++)
 29                     {
 30                         //属性名与查询出来的列名比较
 31                         if (item.Name.ToLower() != read.GetName(i).ToLower()) continue;
 32                         var value = read[i];
 33                         if (value != DBNull.Value)
 34                         {
 35                             item.SetValue(t, value, null);
 36                         }
 37                         break;
 38                     }
 39                 }
 40                 //将创建的对象添加到集合中
 41                 list.Add(t);
 42             }
 43             return list;
 44         }
 45     }
 46     #endregion
 47
 48     #region  IList<T> ToList<T>(string cmdText, List<DbParameter> listpar, string connString) where T : class, new()
 49     /// <summary>
 50     /// 返回一个list
 51     /// </summary>
 52     /// <typeparam name="T">实体模型</typeparam>
 53     /// <param name="cmdText">存储过程名</param>
 54     /// <param name="listpar">参数列表</param>
 55     /// <param name="connString">连接字符串</param>
 56     /// <returns></returns>
 57     public static IList<T> ToList<T>(string cmdText, List<DbParameter> listpar, string connString) where T : class, new()
 58     {
 59         using (var read = DbHelp.Create().ExecuteDataReader(cmdText, listpar, connString))
 60         {
 61             List<T> list = null;
 62             var type = typeof(T);
 63             if (read.HasRows)
 64             {
 65
 66                 list = new List<T>();
 67             }
 68             while (read.Read())
 69             {
 70                 T t = new T();
 71                 foreach (PropertyInfo item in type.GetProperties())
 72                 {
 73                     for (int i = 0; i < read.FieldCount; i++)
 74                     {
 75                         //属性名与查询出来的列名比较
 76                         if (item.Name.ToLower() != read.GetName(i).ToLower()) continue;
 77                         object value = read[i];
 78                         if (value != DBNull.Value)
 79                         {
 80                             item.SetValue(t, value, null);
 81                         }
 82                         break;
 83                     }
 84                 }
 85                 //将创建的对象添加到集合中
 86                 list.Add(t);
 87             }
 88             return list;
 89         }
 90     }
 91     #endregion
 92
 93     #region  IList<T> ToListAsPager<T>(string cmdText, List<DbParameter> listpar, string connString) where T : class, new()
 94     /// <summary>
 95     /// 返回一个list
 96     /// </summary>
 97     /// <typeparam name="T">实体模型</typeparam>
 98     /// <param name="cmdText">存储过程名</param>
 99     /// <param name="listpar">参数列表</param>
100     /// <param name="connString">连接字符串</param>
101     /// <returns></returns>
102     public static IList<T> ToListAsPager<T>(string cmdText, List<DbParameter> listpar, string connString) where T : class, new()
103     {
104         listpar[listpar.Count-1].Direction = ParameterDirection.Output;
105         using (var read = DbHelp.Create().ExecuteDataReader(cmdText, listpar, connString))
106         {
107             List<T> list = null;
108             var type = typeof(T);
109             if (read.HasRows)
110             {
111
112                 list = new List<T>();
113             }
114             while (read.Read())
115             {
116                 T t = new T();
117                 foreach (PropertyInfo item in type.GetProperties())
118                 {
119                     for (int i = 0; i < read.FieldCount; i++)
120                     {
121                         //属性名与查询出来的列名比较
122                         if (item.Name.ToLower() != read.GetName(i).ToLower()) continue;
123                         object value = read[i];
124                         if (value != DBNull.Value)
125                         {
126                             item.SetValue(t, value, null);
127                         }
128                         break;
129                     }
130                 }
131                 //将创建的对象添加到集合中
132                 list.Add(t);
133             }
134             return list;
135         }
136     }
137     #endregion
138
139     #region T FirstOrDefault<T>(string cmdText, string connString)
140     /// <summary>
141     /// 返回一个实体模型
142     /// </summary>
143     /// <typeparam name="T">实体模型</typeparam>
144     /// <param name="cmdText">存储过程名</param>
145     /// <param name="connString">连接字符串</param>
146     /// <returns></returns>
147     public static T FirstOrDefault<T>(string cmdText, string connString) where T : class,new()
148     {
149         using (var read = DbHelp.Create().ExecuteDataReader(cmdText, connString))
150         {
151
152             Type type = typeof(T);
153
154             if (!read.Read()) return null;
155             T t = new T();
156             foreach (PropertyInfo item in type.GetProperties())
157             {
158                 for (int i = 0; i < read.FieldCount; i++)
159                 {
160                     //属性名与查询出来的列名比较
161                     if (item.Name.ToLower() != read.GetName(i).ToLower()) continue;
162                     object value = read[i];
163                     if (value != DBNull.Value)
164                     {
165                         item.SetValue(t, value, null);
166                     }
167                     break;
168                 }
169
170             }
171             return t;
172         }
173     }
174     #endregion
175
176     #region T FirstOrDefault<T>(string cmdText, List<DbParameter> list, string connString)
177     /// <summary>
178     /// 返回一个实体
179     /// </summary>
180     /// <typeparam name="T">实体模型</typeparam>
181     /// <param name="cmdText">存储过程名称</param>
182     /// <param name="ob">object[]</param>
183     /// <param name="connString">连接字符串</param>
184     /// <returns></returns>
185     public static T FirstOrDefault<T>(string cmdText, List<DbParameter> list, string connString) where T : class,new()
186     {
187         using (var read = DbHelp.Create().ExecuteDataReader(cmdText, list, connString))
188         {
189             var type = typeof(T);
190             if (!read.Read()) return null;
191             var t = new T();
192             foreach (var item in type.GetProperties())
193             {
194                 for (var i = 0; i < read.FieldCount; i++)
195                 {
196                     //属性名与查询出来的列名比较
197                     if (item.Name.ToLower() != read.GetName(i).ToLower()) continue;
198                     var value = read[i];
199                     if (value != DBNull.Value)
200                     {
201                         item.SetValue(t, value, null);
202                     }
203                     break;
204                 }
205             }
206             return t;
207         }
208     }
209     #endregion
210
211 }

QueryHelp

时间: 2024-10-13 21:01:04

QueryHelp的相关文章

javaEE 分页功能最终代码优化(二)

上次进行了分页代码的优化(http://blog.csdn.net/u013082989/article/details/51025255),但是不足之处就是在Action层中写hql语句,如果hql语句比较复杂,例如条件查询,会有一些参数的判断,是非常容易出错的.下面对分页查询进一步优化,将会变得非常简单. 下面我们就完成一个带条件的查询,如下图,可以选择部门.按照姓名.按照账号进行条件查询,同时分页. 一:还是先看简单的,jsp界面代码的进一步抽取. (1)之前已经把公共的页码显示的代码抽取

普通分页

#region 全局变量 PageIndex PageSize Conntion Count MySqlHelp Sqldb = new MySqlHelp(); QueryHelp db = new QueryHelp(); // 页数 public int PageIndex = 1; //条数 public int PageSize = 1000; //链接语句 public string Conntion = "server=192.168.1.175;user id=root;pass