Asp.net mvc +Ajax +Extjs+NHibernate 系列之数据库DAO,Bussiness,Service三层
2010-07-21 23:45
531 查看
概述:
SystemConfigMVCDemo.DAO,SystemConfigMVCDemo.Bussiness,
SystemConfigMVCDemo.Service 封装了访问数据库的框架,然后该框架易于拓展,即在数据库表对象的增加,删除,修改时,简单修改框架就可以使用了。该三层使用了面向对象的设计,从而能够拓展。
详解:
(1)SystemConfigMVCDemo.DAO,如下是该动态链接库的类图:
代码 public class HibernateDAO<T, IdT> : IBussinessDAO<T, IdT>
{
protected HibernateAccess access = new HibernateAccess();
#region IBussinessDAO<T,IdT> 成员
/// <summary>
/// 获取T对象
/// </summary>
/// <param name="pkid">pkid</param>
/// <returns>T对象</returns>
public virtual T GetById(IdT pkid)
{
object obj = access.Find(pkid, typeof(T));
return (T)obj;
}
/// <summary>
/// 获取T对象List
/// </summary>
/// <returns>T对象List</returns>
public virtual IList<T> GetList()
{
return access.Find<T>();
}
}
SystemConfigDAO 类:
public class SystemConfigDAO : HibernateDAO<SystemConfig, decimal>
{
/// <summary>
/// 分页查询系统设置对象
/// </summary>
/// <param name="pageIndex">当前页面值</param>
/// <param name="pageSize">每页显示记录数 </param>
/// <returns>系统设置对象列表</returns>
public List<SystemConfig> GetByPage(int pageIndex, int pageSize)
{
List<SystemConfig> configList = new List<SystemConfig>();
if (pageIndex >= 1 && pageSize >= 1)
{
string tempStr = "select top {0} " +
"sc.SystemConfigID,sc.FieldName,sc.FieldValue,sc.FieldGroup,sc.Creator,sc.CreateDT,sc.Updator,sc.UpdateDT " +
"from SystemConfig sc where sc.SystemConfigID not in " +
"( " +
"select top {1} SystemConfigID from SystemConfig " +
"order by SystemConfigID " +
") " +
"order by sc.SystemConfigID ";
//ISQLQuery query=access.Session.CreateSQLQuery("select sc.SystemConfigID,sc.FieldName,sc.FieldValue,sc.FieldGroup,sc.Creator,sc.CreateDT,sc.Updator,sc.UpdateDT from SystemConfig sc");
string queryStr = string.Format(tempStr, pageSize, pageIndex * pageSize - 5);
ISQLQuery query = access.Session.CreateSQLQuery(queryStr);
query.AddEntity(typeof(SystemConfig));
IList<SystemConfig> iConfigList = query.List<SystemConfig>();
configList = iConfigList as List<SystemConfig>;
}
return configList;
}
}
(2)SystemConfigMVCDemo.Bussiness
SystemConfigServiceImpl类实现IServiceImpl接口,在类中包含SystemConfigDAO对象,用来访问数据库。
(3)SystemConfigMVCDemo.Service
SystemConfigService类实现IService接口,在类中包含SystemConfigServiceImpl类的对象,用来访问数据库。
这个类是在外部调用的类,界面使用此类。
实现要点:
该类库的重点在于HibernateAccess类,只要获得NHibernate的Session对象,便可以对数据库的操作游刃有余。对于NHibernate的一些详细的讲解,这里不在累述了。要去看相关的书籍。
总结:
面向对象的特性,以及泛型编程在实际中的应用。继承,类的访问规则等。
SystemConfigMVCDemo.DAO,SystemConfigMVCDemo.Bussiness,
SystemConfigMVCDemo.Service 封装了访问数据库的框架,然后该框架易于拓展,即在数据库表对象的增加,删除,修改时,简单修改框架就可以使用了。该三层使用了面向对象的设计,从而能够拓展。
详解:
(1)SystemConfigMVCDemo.DAO,如下是该动态链接库的类图:
代码 public class HibernateDAO<T, IdT> : IBussinessDAO<T, IdT>
{
protected HibernateAccess access = new HibernateAccess();
#region IBussinessDAO<T,IdT> 成员
/// <summary>
/// 获取T对象
/// </summary>
/// <param name="pkid">pkid</param>
/// <returns>T对象</returns>
public virtual T GetById(IdT pkid)
{
object obj = access.Find(pkid, typeof(T));
return (T)obj;
}
/// <summary>
/// 获取T对象List
/// </summary>
/// <returns>T对象List</returns>
public virtual IList<T> GetList()
{
return access.Find<T>();
}
}
SystemConfigDAO 类:
public class SystemConfigDAO : HibernateDAO<SystemConfig, decimal>
{
/// <summary>
/// 分页查询系统设置对象
/// </summary>
/// <param name="pageIndex">当前页面值</param>
/// <param name="pageSize">每页显示记录数 </param>
/// <returns>系统设置对象列表</returns>
public List<SystemConfig> GetByPage(int pageIndex, int pageSize)
{
List<SystemConfig> configList = new List<SystemConfig>();
if (pageIndex >= 1 && pageSize >= 1)
{
string tempStr = "select top {0} " +
"sc.SystemConfigID,sc.FieldName,sc.FieldValue,sc.FieldGroup,sc.Creator,sc.CreateDT,sc.Updator,sc.UpdateDT " +
"from SystemConfig sc where sc.SystemConfigID not in " +
"( " +
"select top {1} SystemConfigID from SystemConfig " +
"order by SystemConfigID " +
") " +
"order by sc.SystemConfigID ";
//ISQLQuery query=access.Session.CreateSQLQuery("select sc.SystemConfigID,sc.FieldName,sc.FieldValue,sc.FieldGroup,sc.Creator,sc.CreateDT,sc.Updator,sc.UpdateDT from SystemConfig sc");
string queryStr = string.Format(tempStr, pageSize, pageIndex * pageSize - 5);
ISQLQuery query = access.Session.CreateSQLQuery(queryStr);
query.AddEntity(typeof(SystemConfig));
IList<SystemConfig> iConfigList = query.List<SystemConfig>();
configList = iConfigList as List<SystemConfig>;
}
return configList;
}
}
(2)SystemConfigMVCDemo.Bussiness
SystemConfigServiceImpl类实现IServiceImpl接口,在类中包含SystemConfigDAO对象,用来访问数据库。
(3)SystemConfigMVCDemo.Service
SystemConfigService类实现IService接口,在类中包含SystemConfigServiceImpl类的对象,用来访问数据库。
这个类是在外部调用的类,界面使用此类。
实现要点:
该类库的重点在于HibernateAccess类,只要获得NHibernate的Session对象,便可以对数据库的操作游刃有余。对于NHibernate的一些详细的讲解,这里不在累述了。要去看相关的书籍。
总结:
面向对象的特性,以及泛型编程在实际中的应用。继承,类的访问规则等。
相关文章推荐
- Asp.net mvc +Ajax +Extjs+NHibernate 系列之数据库访问层
- Asp.net mvc +Ajax +Extjs+NHibernate 系列之Ajax
- Asp.net mvc +Ajax +Extjs+NHibernate 系列之MVC
- Asp.net mvc +Ajax +Extjs+NHibernate 系列之单元测试
- asp.net,C#,sqlserver,数据库,iis,js,异常,兼容,搜索,性能,备份,编辑器,存取分离,lucene,SEO优化,产品,运营,MVC,三层架构,nhibernate,microsoft,freamwork,网站开发联盟群号:
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 6 ----asp.net MVC+Extjs
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 2
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 1---准备
- Ajax - ASP.NET MVC 4 系列
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(五):Extjs树形导航菜单
- 搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (三)实现数据库接口层和业务逻辑层(转)
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 4 ----业务逻辑层
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 1
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 2----整体架构
- 搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (三)实现数据库接口层和业务逻辑层
- 使用StructureMap扩展ASP.NET MVC三层结构框架系列文章总结篇(附源码下载)
- ASP.NET MVC实践系列4-Ajax应用
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 2