前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (三)实现数据库接口层和业务逻辑层

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

作者头像
老马
发布2022-05-10 15:28:31
3680
发布2022-05-10 15:28:31
举报
文章被收录于专栏:老马寒门IT老马寒门IT

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

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

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

代码语言:javascript
复制
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项目的引用。因为我们也用到了实体类。

代码如下:

代码语言:javascript
复制
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实体类。还是看代码:

代码语言:javascript
复制
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项目的引用。看代码:

代码语言:javascript
复制
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
    }
}

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2010-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档