这是我发布于2008年的一个helper,难得有空整理一下。

  1 using System;
2 using log4net;
3 using NHibernate;
4 using System.Text;
5 using Iesi.Collections;
6 using System.Collections;
7 using Castle.DynamicProxy;
8 using System.Collections.Generic;
9 using NHibernate.Criterion;
10
11
12 namespace DBUtility
13 {
14 /// <summary>
15 /// Hibernate操作Helper
16 /// 作者:覃乃林
17 /// 2008-12-22
18 /// </summary>
19 public abstract class HibHelper
20 {
21 /// <summary>
22 /// 插入数据
23 /// </summary>
24 /// <param name="obj">新数据实体</param>
25 /// <returns>返回数据id</returns>
26 public static object Save(object obj)
27 {
28 object objid = new object();
29 ISession session = HibSession.GetSession();
30 ITransaction tan = session.BeginTransaction();
31 obj = session.Merge(obj);
32 try
33 {
34 tan.Begin();
35 objid = session.Save(obj);
36 tan.Commit();
37 }
38 catch (Exception)
39 {
40 tan.Rollback();
41 throw;
42 }
43 session.Flush();
44 return objid;
45 }
46 /// <summary>
47 /// 删除数据
48 /// </summary>
49 /// <param name="clazz">数据类</param>
50 /// <param name="objId">数据id</param>
51 /// <returns>成功返回true;失败返回false</returns>
52 public static bool Delete(Type clazz, object objId)
53 {
54 bool isTrue = false;
55 object item = Get(clazz, objId);
56 ISession session = HibSession.GetSession();
57 ITransaction tan = session.BeginTransaction();
58 try
59 {
60 tan.Begin();
61 session.Delete(item);
62 tan.Commit();
63 isTrue = true;
64 }
65 catch (Exception)
66 {
67
68 tan.Rollback();
69 throw;
70 }
71 session.Flush();
72 return isTrue;
73 }
74 /// <summary>
75 /// 更新数据
76 /// </summary>
77 /// <param name="obj">新数据实体</param>
78 /// <returns>成功返回true;失败返回false</returns>
79 public static bool Update(object obj)
80 {
81 bool isTrue = false;
82 ISession session = HibSession.GetSession();
83 ITransaction tan = session.BeginTransaction();
84 obj = session.Merge(obj);
85 try
86 {
87 tan.Begin();
88 session.Update(obj);
89 tan.Commit();
90 isTrue = true;
91 }
92 catch (Exception)
93 {
94 tan.Rollback();
95 throw;
96 }
97 session.Flush();
98 return isTrue;
99 }
100 /// <summary>
101 /// 获取数据项
102 /// </summary>
103 /// <param name="clazz">数据类</param>
104 /// <param name="id">数据主键</param>
105 /// <returns>返回数据项</returns>
106 public static object Get(Type clazz, object id)
107 {
108 object obj = new object();
109 ISession session = HibSession.GetSession();
110 try
111 {
112 obj = session.Get(clazz, id);
113 }
114 catch (Exception)
115 {
116 throw;
117 }
118 return obj;
119 }
120
121 }
122 }

 

  1 using System;
2 using log4net;
3 using NHibernate;
4 using System.Text;
5 using Iesi.Collections;
6 using System.Collections;
7 using Castle.DynamicProxy;
8 using System.Collections.Generic;
9 using NHibernate.Criterion;
10
11
12 namespace DBUtility
13 {
14 /// <summary>
15 /// Hibernate操作Helper
16 /// 作者:覃乃林
17 /// 2008-12-22
18 /// </summary>
19 public abstract class HibHelper<T>
20 {
21 /// <summary>
22 /// 查询所有项
23 /// </summary>
24 /// <param name="clazz">数据类</param>
25 /// <returns>返回所有项集合</returns>
26 public static IList<T> QueryAll()
27 {
28 IList<T> list = null;
29 ISession session = HibSession.GetSession();
30 ICriteria ic = session.CreateCriteria(typeof(T));
31 list = ic.List<T>();
32 return list;
33 }
34
35 /// <summary>
36 /// 查询所有满足条件的项
37 /// </summary>
38 /// <param name="clazz">数据类</param>
39 /// <param name="iCriterion">查询条件数组</param>
40 /// <returns>返回条件项集合</returns>
41 public static IList<T> Query(params ICriterion[] iCriterion)
42 {
43 IList<T> list = null;
44 ISession session = HibSession.GetSession();
45 ICriteria ic = session.CreateCriteria(typeof(T));
46 foreach (ICriterion var in iCriterion)
47 {
48 ic.Add(var);
49 }
50 list = ic.List<T>();
51 return list;
52 }
53
54
55 /// <summary>
56 /// 翻页查询
57 /// </summary>
58 /// <param name="pageIndex">起始页</param>
59 /// <param name="pageSize">每页显示项</param>
60 /// <param name="clazz">数据类</param>
61 /// <param name="count">返回数据项总数</param>
62 /// <param name="iCriterion">查询条件数组</param>
63 /// <returns>返回条件项集合</returns>
64 public static IList<T> Query(int pageIndex, int pageSize, out int count, params ICriterion[] iCriterion)
65 {
66 IList<T> list = null;
67 ISession session = HibSession.GetSession();
68 ICriteria ic = session.CreateCriteria(typeof(T));
69 foreach (ICriterion var in iCriterion)
70 {
71 ic.Add(var);
72 }
73 count = ic.List().Count;
74 int first = pageSize * (pageIndex - 1);
75 ic.SetFirstResult(first);
76 ic.SetMaxResults(pageSize);
77 list = ic.List<T>();
78 return list;
79 }
80 /// <summary>
81 /// 翻页查询
82 /// </summary>
83 /// <param name="pageIndex">起始页</param>
84 /// <param name="pageSize">每页显示项</param>
85 /// <param name="clazz">数据类</param>
86 /// <param name="order">排序条件</param>
87 /// <param name="count">返回数据项总数</param>
88 /// <param name="iCriterion">查询条件数组</param>
89 /// <returns>返回条件项集合</returns>
90 public static IList<T> Query(int pageIndex, int pageSize, Order order, out int count, params ICriterion[] iCriterion)
91 {
92 IList<T> list = null;
93 ISession session = HibSession.GetSession();
94 ICriteria ic = session.CreateCriteria(typeof(T));
95 ic.AddOrder(order);
96 foreach (ICriterion var in iCriterion)
97 {
98 ic.Add(var);
99 }
100 count = ic.List().Count;
101 int first = pageSize * (pageIndex - 1);
102 ic.SetFirstResult(first);
103 ic.SetMaxResults(pageSize);
104 list = ic.List<T>();
105 return list;
106 }
107 /// <summary>
108 /// HQL翻页查询
109 /// </summary>
110 /// <param name="pageIndex">起始页</param>
111 /// <param name="pageSize">每页显示项</param>
112 /// <param name="Hql">HQL语句</param>
113 /// <param name="count">返回数据项总数</param>
114 /// <returns>返回条件项集合</returns>
115 public static IList<T> QueryByHql(int pageIndex, int pageSize, string Hql, out int count)
116 {
117 IList<T> list = null;
118 ISession session = HibSession.GetSession();
119 IQuery iq = session.CreateQuery(Hql);
120 count = iq.List().Count;
121 int first = pageSize * (pageIndex - 1);
122 iq.SetFirstResult(first);
123 iq.SetMaxResults(pageSize);
124 list = iq.List<T>();
125 return list;
126 }
127
128
129 }
130 }

 

不为别的,只是记录一下,接下来将发布一份3.0-3.2的版本helper