搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (三)实现数据库接口层和业务逻辑层(转)

转载 2012年05月03日 12:07:36

本篇是介绍我们完成数据库接口层和业务逻辑层的接口的设计和实现。

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

第一步:设计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
    }
}


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

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

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

原文网址:http://www.cnblogs.com/fly_dragon/archive/2010/09/06/1819547.html

搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (三)实现数据库接口层和业务逻辑层

本篇是介绍我们完成数据库接口层和业务逻辑层的接口的设计和实现。 废话不多讲,还是怎么一步一步做。 第一步:设计IDao层。在MyWeb.WebTemp.IDao项目中添加IUserDao接口。代码...
  • huyanliang
  • huyanliang
  • 2016年07月05日 14:44
  • 537

搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (五)测试你的成果

本篇文章:主要介绍怎么使用这套框架。在做好配置等前期工作后。我们就是要与Mvc进行融合了。由于Mvc本人也是个初级入门者。对于这部分的研究还不是很深入。但是基本应用已经可以了。下面就让我们开始一个简单...
  • huyanliang
  • huyanliang
  • 2016年07月05日 14:48
  • 458

三层架构:表示层-业务逻辑…

原文地址:三层架构:表示层-业务逻辑层-数据访问层作者:灰烬 三层架构和MVC是两个东西。 非要相关的话: 三层架构中"表现层"的aspx页面对应MVC中的View(继承的类不一样) 三层架构中"表现...
  • dinghaoseu
  • dinghaoseu
  • 2015年12月15日 23:19
  • 3493

MVC模式中如何区分应用程序逻辑(Controller层)和业务逻辑(Model层)

// Cart控制器 class Controller_Cart { function actionAddGoods() { $goods_id = (int)$_GE...
  • dizzthxl
  • dizzthxl
  • 2012年06月07日 16:25
  • 3176

【ssm框架】Service业务逻辑层&&Mybatis映射层

Service层 通常业务处理的代码并不直接放在controller层中,那样会显得职责不单一,不方便维护。Service业务逻辑层通常用来处理各种各样的业务逻辑。我们将最基本的增删改查抽取出来,作...
  • Hemk340200600
  • Hemk340200600
  • 2017年09月23日 13:48
  • 315

三层架构(UI/BLL/DAL)

三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想...
  • ronycoolman
  • ronycoolman
  • 2010年07月18日 10:33
  • 491

创建业务逻辑层C#

创建业务逻辑层 本文档是 Visual C# 教程 ( 切换到 Visual Basic 教程) 本教程中,我们将了解怎样将业务规则集中到在表示层与 DAL 之间,充当数据交互...
  • haibo211314
  • haibo211314
  • 2014年03月08日 12:44
  • 967

【SSH】框架浅析

ssh即struts+spring+hibernate,SSH框架是一种比较流行的Web应用程序的开源框架,复用性好,维护方便,集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域...
  • u013046597
  • u013046597
  • 2016年07月20日 20:48
  • 3116

菜鸟级三层框架(EF+MVC)项目实战之 系列三 业务逻辑层封装

概述:业务逻辑层封装相对数据访问层来说较为简单,我们分为以下几步:          1、抽象基接口定义CRUD方法          2、应用T4模版生成所有实体接口       ...
  • dcyly2004
  • dcyly2004
  • 2016年07月16日 09:49
  • 661

你的业务逻辑层是否是被架空了?(一)

1. “你的业务逻辑层为什么要按照数据库的表来建立。一旦数据库的表更改了岂不是业务逻辑层也要更改么。”当大师傅问我这个问题的时候,我才反应过来我的业务逻辑层理解的有问题,当时我是把业务逻辑都放到了U层...
  • u013065023
  • u013065023
  • 2015年05月17日 21:27
  • 1729
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (三)实现数据库接口层和业务逻辑层(转)
举报原因:
原因补充:

(最多只允许输入30个字)