可以把增、删、改、查都写成泛型方法
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
public class AbstractDao<T>
{
private string m_sessionFactoryConfigPath;
protected ISession CurrentSession
{
get
{
return SessionManager.Instance.GetSession(m_sessionFactoryConfigPath);
}
}
public AbstractDao(string sessionFactoryConfigPath)
{
if (string.IsNullOrEmpty(sessionFactoryConfigPath))
{
throw new ArgumentNullException("");
}
m_sessionFactoryConfigPath = sessionFactoryConfigPath;
}
protected static object s_workLocker = new object();
/// <summary>
/// 获得实体对象
/// </summary>
/// <param name="key">关键字</param>
/// <returns>对应实体</returns>
public T GetEntity(Object key)
{
if (!CurrentSession.IsConnected)
{
CurrentSession.Reconnect();
}
T entity = default(T);
lock (s_workLocker)
{
try
{
using (ISession session = CurrentSession)
{
using (session.BeginTransaction())
{
entity = session.Load<T>(key);
}
}
}
catch (Exception ex)
{
throw new PersistenceException("", ex);
}
}
return entity;
}
/// <summary>
/// 获得IList<string>类型的返回值
/// </summary>
/// <param name="hql"></param>
/// <returns></returns>
public IList<string> GetIListString(string hql)
{
IList<string> lists = null;
lock (s_workLocker)
{
using (ISession session = CurrentSession)
{
using (ITransaction transaction = session.BeginTransaction())
{
try
{
lists = session.CreateQuery(hql).List<string>();
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
throw new PersistenceException("", ex);
}
}
}
}
return lists;
}
}