zoukankan      html  css  js  c++  java
  • 搭建你的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
    }
    }

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

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

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

    文章索引:

    搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (一)

    搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (二)创建你的项目

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

    搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (四)配置全攻略

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

    搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (六)写在后面的话

  • 相关阅读:
    FireFox浏览器的下载和安装、借助RamDisk让你的FireFox飞起来
    XXX is not in the sudoers file. This incident will be reported 的问题解决方案
    UVA How Big Is It?
    CentOS配置smaba与Windows共享文件
    博客说明
    linux 下安装jdk及配置jdk环境图解
    swift 笔记 (十二) —— 下标
    依据先中序序列或后中序序列确定二叉树
    opencv2使用形态学滤波对图像进行边缘及角点检測
    $POST 、$HTTP_RAW_POST_DATA、php://input三者之间的差别
  • 原文地址:https://www.cnblogs.com/fly_dragon/p/1819547.html
Copyright © 2011-2022 走看看