Spring.Net2.0+NHibernate4.0 +Asp.Net Mvc4 一
2024-08-25 03:28:27
1.创建项目结构
控制器: SN.Controllers
数据访问 :SN.Dao
实体映射: SN.Models
服务层: SN.Servers
视图层: SN.Web
2.添加需要插件
Tools=>Manage Nuget Package
A. Spring.Net2.0
B. NHibernate4.0
C. Spring.Wb.Mvc4
3.SN.Models
文件夹:Mappings(User.hbm.xml)
文件:User.cs
User.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="SN.Models.User,SN.Models" table="SN_User" lazy="false">
<id name="Id" column="Id" type="Int32">
<generator class="native" />
</id>
<property name="Name" column="SName" type="String" length="" />
<property name="NickName" column="SNickName" type="String" length="" />
<property name="PassWord" column="SPassWord" type="String" length="" />
<property name="IdentifyId" column="SIdentifyId" type="String" length="" />
<property name="Phone" column="SPhone" type="String" length="" />
<property name="Email" column="SEmail" type="String" length="" />
<property name="CreateTime" column="DCreateDate" type="DateTime" />
<property name="Creator" column="SCreator" type="String" length="" />
<property name="LastTimeLogOn" column="DLastTimeLogOn" type="DateTime" />
</class>
</hibernate-mapping>
User.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace SN.Models
{ [Serializable]
public class User
{
/// <summary>
/// 用户id
/// </summary>
public Int32 Id
{
get;
set;
} /// <summary>
/// 用户名,登录所用的名字
/// </summary>
public string Name
{
get;
set;
} /// <summary>
/// 真实姓名
/// </summary>
public string NickName
{
get;
set;
} /// <summary>
/// 密码
/// </summary>
public string PassWord
{
get;
set;
} /// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime
{
get;
set;
} /// <summary>
/// 创建人
/// </summary>
public string Creator
{
get;
set;
} /// <summary>
/// </summary>
public string Email
{
get;
set;
} /// <summary>
/// 联系电话
/// </summary>
public string Phone
{
get;
set;
} /// <summary>
/// 身份证
/// </summary>
public string IdentifyId
{
get;
set;
} /// <summary>
/// 最后一次登录时间
/// </summary>
public DateTime LastTimeLogOn
{
get;
set;
}
} }
4.SN.Dao
文件夹:Config(Objects.xml SpringNHibernate.xml)
文件夹:Dao(UserDao.cs)
文件夹:IDao(IUserDao.cs)
文件:HibernateDao.cs
Objects.xml
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:tx="http://www.springframework.net/tx"> <object id="UserDaoImpl" type="SN.Dao.UserDao, SN.Dao" >
<!-- ref 表示引用的对象 -->
<property name="SessionFactory" ref="NHibernateSessionFactory" />
</object> </objects>
SpringNHibernate.xml
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:db="http://www.springframework.net/database"
xmlns:tx="http://www.springframework.net/tx"
>
<!--描述-->
<description>
数据访问的配置信息
</description> <!-- 通过主应用程序的上下文配置文件引用 -->
<object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">
<property name="ConfigSections" value="databaseSettings"/>
</object>
<!-- connectionString=""-->
<!-- 数据库的配置 -->
<db:provider id="DbProvider"
provider="System.Data.SqlClient"
connectionString="server=${db.server};Database=${db.database};uid=${db.user};pwd=${db.password}"
/> <!-- NHibernate 配置 --> <!-- 可以通过 name 为其指定别名 name="SessionFactory" -->
<object id="NHibernateSessionFactory"
type="Spring.Data.NHibernate.LocalSessionFactoryObject,Spring.Data.NHibernate4" > <!-- 关于数据库连接的配置,直接使用 DbProvider 中的设置,这样,不需要为 Hibernate 再提供连接串和驱动 -->
<property name="DbProvider" ref="DbProvider"/> <!-- 包含有映射文件的程序集,需要分析的hbm程序集名称 -->
<property name="MappingAssemblies">
<list>
<value>SN.Models</value>
</list>
</property> <!-- 其他的参数 -->
<property name="HibernateProperties">
<dictionary>
<!-- 方言 -->
<entry key="dialect" value="NHibernate.Dialect.MsSql2008Dialect"/>
<entry key="use_proxy_validator" value="false" />
<entry key="show_sql" value="true"/>
</dictionary>
</property> <!-- 必须增加此项说明,与 Spring 的声明式事务集成 -->
<property name="ExposeTransactionAwareSessionFactory" value="true" /> </object>
</objects>
UserDao.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spring.Stereotype;
using Spring.Transaction.Interceptor;
using SN.Models; namespace SN.Dao
{
[Repository]
public class UserDao : HibernateDao, IUserDao
{ public IList<User> GetAll()
{
return GetAll<User>();
}
public IList<User> GetAllUsers()
{
return GetAll<User>();
//return new List<User> { new User { Id = 1, Name = "sulin" } };
}
}
}
IUserDao.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SN.Models;
namespace SN.Dao
{
public interface IUserDao
{
IList<User> GetAllUsers();
}
}
HibernateDao.cs
using NHibernate;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace SN.Dao
{
public abstract class HibernateDao
{
private ISessionFactory sessionFactory; /// <summary>
/// Session factory for sub-classes.
/// </summary>
public ISessionFactory SessionFactory
{
protected get { return sessionFactory; }
set { sessionFactory = value; }
} /// <summary>
/// Get's the current active session. Will retrieve session as managed by the
/// Open Session In View module if enabled.
/// </summary>
protected ISession CurrentSession
{
get { return sessionFactory.GetCurrentSession(); }
}
protected IList<T> GetAll<T>() where T : class
{
ICriteria criteria = CurrentSession.CreateCriteria<T>();
return criteria.List<T>();
}
}
}
5.SN.Servers
文件夹:Config(Servers.xml)
文件夹:Services(UserService.cs)
文件夹:IServices(IUserService.cs)
Servers.xml
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"> <object id="UserServiceImpl" type="SN.Servers.UserService,SN.Servers" >
<!-- ref 表示引用的对象 -->
<property name="IUser" ref="UserDaoImpl" />
</object> </objects>
IUserService.cs
using SN.Dao;
using SN.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace SN.Servers
{
public interface IUserService
{
IUserDao IUser { set; get; }
IList<User> GetAllUsers();
}
}
UserService.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace SN.Servers
{ public class UserService:IUserService
{ public Dao.IUserDao IUser
{
get;
set;
} public IList<Models.User> GetAllUsers()
{
return IUser.GetAllUsers();
}
}
}
最新文章
- InnoDB关键特性学习笔记
- phpcms v9图片生成缩略图变成黑色解决方法
- C# 去掉List重复元素的方法
- JavaScript判断数据类型
- JAVA中I/O流
- servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)
- 自定义NavigationView&#39;s item 的高度
- struts2 I18n问题 国际化
- Yii 2.0: yii2-highcharts-widget创建饼状图
- pig询问top k,每个返回hour和ad_network_id最大的两个记录(SUBSTRING,order,COUNT_STAR,limit)
- python数据结构(一)------序列
- C++11 标准新特性: 右值引用与转移语义
- 《Java2 实用教程(第五版)》学习指导
- 一个bug分析 ----------换个角度,有另外一个天地
- [MySQL]增加约束键
- How to measure IOPS for VMware
- git config --global user.email
- C#基础笔记(第二十二天)
- 初识iVew table表属性
- php将“\\”转换成“\”的例子