打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (三)实现数据库接口层和业务逻辑层
本篇是介绍我们完成数据库接口层和业务逻辑层的接口的设计和实现。

废话不多讲,还是怎么一步一步做。

第一步:设计IDao层。在MyWeb.WebTemp.IDao项目中添加IUserDao接口。代码如下:

 

代码
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();

/// <summary>
/// 根据id来获取用户
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
User GetUserById(int Id);

/// <summary>
/// 添加用户信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
bool AddUser(User user);

/// <summary>
/// 更新用户信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
bool UpdateUser(User user);

/// <summary>
/// 更新或者添加用户信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
bool AddOrUpdateUser(User user);

/// <summary>
/// 删除用户
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
bool DeleteUser(User user);
}
}

注:要添加Model项目的引用。因为我们用到了User实体类。

 

第二步:实现IDao设计。在MyWeb.WebTemp.HibernateDao项目中添加类文件:UserDaoHibernate.cs

在编写代码之前,我们首先要引入spring.net和Nhibernate的支持类库。我用到的所有dll,稍后将提供下载。如果你急需

可以通过邮件向我索取:malun666@126.com

另外要添加Model项目的引用。因为我们也用到了实体类。

代码如下:

 

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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);
return true;
}

public bool AddOrUpdateUser(MyWeb.WebTemp.Model.User user)
{
HibernateTemplate.SaveOrUpdate(user);
return true;
}

public bool DeleteUser(MyWeb.WebTemp.Model.User user)
{
HibernateTemplate.Delete(user);
return true;
}

#endregion
}
}

 

 

这就实现了数据库接口层的基本的增删改。具体看你的应用,可以根据你的需要添加。

第三步:设计接口IBLL层【业务逻辑接口层】。在MyWeb.WebTemp.IBLL中添加类文件:IUserService

注:添加Model项目的引用。因为这一层我们用到了User实体类。还是看代码:

 

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyWeb.WebTemp.Model;

namespace MyWeb.WebTemp.IBLL
{
public interface IUserService
{
/// <summary>
/// 获取 所有用户信息列表
/// </summary>
/// <returns></returns>
IList<User> GetAllUsers();

/// <summary>
/// 保存用户信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
bool UpdateUser(User user);

/// <summary>
/// 删除用户信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
bool DeleteUser(User user);

/// <summary>
/// 添加一个用户信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
bool AddUser(User user);

/// <summary>
/// 添加或者更新用户信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
bool UpdateOrAddUser(User user);

/// <summary>
/// 根据id来获取用户信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
User GetUserById(int id);
}
}

第四步:实现IBLL层。【业务逻辑接口的实现】在MyWeb.WebTemp.BLL中添加类文件:UserServiceImpl.cs

注:Impl是实现单词的缩写。同样我们要添加Model项目引用和IUserDao项目的引用。看代码:

 

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyWeb.WebTemp.IBLL;
using MyWeb.WebTemp.IDao;
using MyWeb.WebTemp.Model;

namespace MyWeb.WebTemp.BLL
{
public class UserServiceImpl : IUserService
{
#region 属性

private IUserDao userDao;

public IUserDao UserDao
{
get { return userDao; }
set { userDao = value; }
}

#endregion

#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);
}

#endregion
}
}

当前项目的目录结构如图所示:

 

 

 

你的业务逻辑层和数据库接口层实现了吗?

先写到这。呵呵,先回家吃饭去了。呵呵

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架
验证整数的正则表达式与C#验证整数-大叔学编程-博客园
C# 后台判断一个字符串是否为整数或者带两位小数的数字
gridview排序
C#去除文件夹只读属性
C#正则表达式判断输入日期格式是否正确
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服