本篇是介紹我們完成資料庫接口層和業務邏輯層的接口的設計和實作。
廢話不多講,還是怎麼一步一步做。
第一步:設計IDao層。在MyWeb.WebTemp.IDao項目中添加IUserDao接口。代碼如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyWeb.WebTemp.Model;
namespace MyWeb.WebTemp.IDao
{
public interface IUserDao
/// <summary>
/// 擷取所有的使用者
/// </summary>
/// <returns></returns>
IList<User> GetAllUsers();
/// 根據id來擷取使用者
/// <param name="Id"></param>
User GetUserById(int Id);
/// 添加使用者資訊
/// <param name="user"></param>
bool AddUser(User user);
/// 更新使用者資訊
bool UpdateUser(User user);
/// 更新或者添加使用者資訊
bool AddOrUpdateUser(User user);
/// 删除使用者
bool DeleteUser(User user);
}
注:要添加Model項目的引用。因為我們用到了User實體類。
第二步:實作IDao設計。在MyWeb.WebTemp.HibernateDao項目中添加類檔案:UserDaoHibernate.cs
在編寫代碼之前,我們首先要引入spring.net和Nhibernate的支援類庫。我用到的所有dll,稍後将提供下載下傳。如果你急需
可以通過郵件向我索取:[email protected]
另外要添加Model項目的引用。因為我們也用到了實體類。
代碼如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
using Spring.Data.NHibernate.Generic.Support;
using Spring.Data.NHibernate.Generic;
using SpringHiberate.dao.model;
using NHibernate;
using MyWeb.WebTemp.IDao;
namespace MyWeb.WebTemp.HibernateDao
public class UserDaoHibernate : HibernateDaoSupport,IUserDao
#region IUserDao 成員
public IList<MyWeb.WebTemp.Model.User> GetAllUsers()
return HibernateTemplate.LoadAll<MyWeb.WebTemp.Model.User>();
public MyWeb.WebTemp.Model.User GetUserById(int Id)
return (MyWeb.WebTemp.Model.User)HibernateTemplate.Execute(new HibernateDelegate<MyWeb.WebTemp.Model.User>(delegate(NHibernate.ISession session)
StringBuilder sb = new StringBuilder();
sb.Append("from User c where c.Id=?");
IQuery query = session.CreateQuery(sb.ToString());
query.SetParameter(0, Id);
return query.UniqueResult() as MyWeb.WebTemp.Model.User;
}), true);
public bool AddUser(MyWeb.WebTemp.Model.User user)
if (HibernateTemplate.Save(user) != null)
return true;
return false;
public bool UpdateUser(MyWeb.WebTemp.Model.User user)
HibernateTemplate.Update(user);
public bool AddOrUpdateUser(MyWeb.WebTemp.Model.User user)
HibernateTemplate.SaveOrUpdate(user);
public bool DeleteUser(MyWeb.WebTemp.Model.User user)
HibernateTemplate.Delete(user);
#endregion
這就實作了資料庫接口層的基本的增删改。具體看你的應用,可以根據你的需要添加。
第三步:設計接口IBLL層【業務邏輯接口層】。在MyWeb.WebTemp.IBLL中添加類檔案:IUserService
注:添加Model項目的引用。因為這一層我們用到了User實體類。還是看代碼:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
namespace MyWeb.WebTemp.IBLL
public interface IUserService
/// 擷取 所有使用者資訊清單
/// 儲存使用者資訊
/// 删除使用者資訊
/// 添加一個使用者資訊
/// 添加或者更新使用者資訊
bool UpdateOrAddUser(User user);
/// 根據id來擷取使用者資訊
/// <param name="id"></param>
User GetUserById(int id);
第四步:實作IBLL層。【業務邏輯接口的實作】在MyWeb.WebTemp.BLL中添加類檔案:UserServiceImpl.cs
注:Impl是實作單詞的縮寫。同樣我們要添加Model項目引用和IUserDao項目的引用。看代碼:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
using MyWeb.WebTemp.IBLL;
namespace MyWeb.WebTemp.BLL
public class UserServiceImpl : IUserService
#region 屬性
private IUserDao userDao;
public IUserDao UserDao
get { return userDao; }
set { userDao = value; }
#region IUserService 成員
public IList<User> GetAllUsers()
return UserDao.GetAllUsers();
public bool UpdateUser(User user)
return UserDao.UpdateUser(user);
public bool DeleteUser(User user)
return UserDao.DeleteUser(user);
public bool AddUser(User user)
return UserDao.AddUser(user);
public bool UpdateOrAddUser(User user)
return UserDao.AddOrUpdateUser(user);
public User GetUserById(int id)
return UserDao.GetUserById(id);
目前項目的目錄結構如圖所示:
你的業務邏輯層和資料庫接口層實作了嗎?
先寫到這。呵呵,先回家吃飯去了。呵呵
文章索引:
<a href="http://www.cnblogs.com/fly_dragon/archive/2010/09/06/1819422.html">搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 架構 (一)</a>
<a href="http://www.cnblogs.com/fly_dragon/archive/2010/09/06/1819494.html">搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 架構 (二)建立你的項目</a>
<a href="http://www.cnblogs.com/fly_dragon/archive/2010/09/06/1819547.html">搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 架構 (三)實作資料庫接口層和業務邏輯層</a>
<a href="http://www.cnblogs.com/fly_dragon/archive/2010/09/archive/2010/09/07/1820301.html">搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 架構 (四)配置全攻略</a>
<a href="http://www.cnblogs.com/fly_dragon/archive/2010/09/07/1820449.html">搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 架構 (五)測試你的成果</a>
<a href="http://www.cnblogs.com/fly_dragon/archive/2010/09/07/1820472.html">搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 架構 (六)寫在後面的話</a>