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

简介: 本篇是介绍我们完成数据库接口层和业务逻辑层的接口的设计和实现。 废话不多讲,还是怎么一步一步做。 第一步:设计IDao层。在MyWeb.WebTemp.IDao项目中添加IUserDao接口。

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

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

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

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.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();

/// <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项目的引用。因为我们也用到了实体类。

代码如下:

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
 
  
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实体类。还是看代码:

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
 
  
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项目的引用。看代码:

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
 
  
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
}
}

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

img_c20a513f4ad4e51c951f2348848bba71.png

 

 

 

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

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

 

 

文章索引:

搭建你的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 框架 (六)写在后面的话

目录
相关文章
|
1月前
|
XML 安全 Java
|
2月前
|
缓存 NoSQL Java
什么是缓存?如何在 Spring Boot 中使用缓存框架
什么是缓存?如何在 Spring Boot 中使用缓存框架
79 0
|
20天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
15天前
|
Java 开发者 Spring
理解和解决Spring框架中的事务自调用问题
事务自调用问题是由于 Spring AOP 代理机制引起的,当方法在同一个类内部自调用时,事务注解将失效。通过使用代理对象调用、将事务逻辑分离到不同类中或使用 AspectJ 模式,可以有效解决这一问题。理解和解决这一问题,对于保证 Spring 应用中的事务管理正确性至关重要。掌握这些技巧,可以提高开发效率和代码的健壮性。
45 13
|
15天前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
1月前
|
消息中间件 开发框架 监控
NET任务调度框架Hangfire使用指南
Hangfire 是一个用于 .NET 应用程序的开源任务调度框架,支持长时间运行任务、定时任务等。通过简单的安装配置,即可将任务从主线程分离,提升应用性能。支持多种数据库,提供丰富的任务类型如立即执行、延迟执行和周期性任务,并有可视化管理界面 Hangfire Dashboard。还支持安全性配置及扩展插件,如 Hangfire.HttpJob,适合各种复杂场景下的任务调度需求。
60 1
NET任务调度框架Hangfire使用指南
|
27天前
|
IDE Java 测试技术
互联网应用主流框架整合之Spring Boot开发
通过本文的介绍,我们详细探讨了Spring Boot开发的核心概念和实践方法,包括项目结构、数据访问层、服务层、控制层、配置管理、单元测试以及部署与运行。Spring Boot通过简化配置和强大的生态系统,使得互联网应用的开发更加高效和可靠。希望本文能够帮助开发者快速掌握Spring Boot,并在实际项目中灵活应用。
48 5
|
27天前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
41 4
|
1月前
|
缓存 Java 数据库连接
Spring框架中的事件机制:深入理解与实践
Spring框架是一个广泛使用的Java企业级应用框架,提供了依赖注入、面向切面编程(AOP)、事务管理、Web应用程序开发等一系列功能。在Spring框架中,事件机制是一种重要的通信方式,它允许不同组件之间进行松耦合的通信,提高了应用程序的可维护性和可扩展性。本文将深入探讨Spring框架中的事件机制,包括不同类型的事件、底层原理、应用实践以及优缺点。
69 8
|
2月前
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
116 6