好久没有更新了,在写设计与论文还有一些其他的事情,今天主要更新一下我在做项目中使用的Nhibernate的插件的使用与配置依然是老规矩最后有项目源码.

所需要的程序集MySql.Data与Nhibernate使用的是Nuget直接搜索进行使用的

Nhibernate插件的使用

Nhibernate插件的使用

然后是配置文件

Nhibernate插件的使用

中间写字图片没了换了个其他的图片软件编辑的,接下来是映射类与配置文件

Nhibernate插件的使用

Nhibernate插件的使用

数据库数据

Nhibernate插件的使用

  • 最后粘贴源码
  • 对初始建立对话的封装using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using NHibernate.Cfg;
    using NHibernate;
    namespace NhibernaetDemo
    {
        class Nhibernate
        {
            private static ISessionFactory sessionFactory;
            //对会话工厂进行封装不需要进行重复的创建
            private static ISessionFactory Sessionfactory
            {
                get
                {
                    if (sessionFactory == null)
                    {
                        var configuration = new Configuration();
                        configuration.Configure(); //解析hibernate.cfg.xml
                        configuration.AddAssembly("NhibernaetDemo");//解析映射文件user.hbm.xml
                        sessionFactory = configuration.BuildSessionFactory();//建立会话工厂
                    }
                    return sessionFactory;
                }  
            }
            public static ISession OpenSession()
            {
                return Sessionfactory.OpenSession();//返回一个与数据库的会话
            }
        }
    }
  • 用户映射类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace NhibernaetDemo.Model
    {
        public class User
        {
            public virtual int Id{get;set;}
            public virtual string Username { get; set; }
            public virtual string Password { get; set; }
            public virtual DateTime Registerdate { get; set; }
        }
    }

  • 用户接口

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using NhibernaetDemo.Model;
    namespace NhibernaetDemo.Manger
    {
        //使用接口方便更清楚的看见方法而且跟换其实现类
        interface IUserManger
        {
            void Add(User user);
            void Update(User user);
            void Remove(User user);
            User GetById(int id);
            User GetByUsername(string username);
            ICollection<User> GetAllUsers();
            bool VerifyUser(string username, string password);
        }
    }

  •  

    接口功能实现

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using NhibernaetDemo.Model;
    using NHibernate;
    using NHibernate.Criterion;
    namespace NhibernaetDemo.Manger
    {
        class UserManger : IUserManger
        {
            //添加数据
            public void Add(User user)
            {
                //ISession session = Nhibernate.OpenSession();//获取数据库对话
                //session.Save(user);
                //session.Close();
                using (ISession session = Nhibernate.OpenSession())//括号中为需要释放资源的代码在执行完毕后会自动释放资源
                {
                    using (ITransaction transaction = session.BeginTransaction())
                    {
                        session.Save(user);
                        transaction.Commit();
                    }     
                }
            }
            //获取表中所有数据
            public ICollection<User> GetAllUsers()
            {
                using (ISession session = Nhibernate.OpenSession())
                {

                    //简化
                    IList<User> users = session.CreateCriteria(typeof(User)).List<User>();
                    return users;
                }
            }
            //通过ID获取数据
            public User GetById(int id)
            {
                using (ISession session = Nhibernate.OpenSession())//括号中为需要释放资源的代码在执行完毕后会自动释放资源
                {
                    using (ITransaction transaction = session.BeginTransaction())
                    {
                        User user = session.Get<User>(id);
                        transaction.Commit();
                        return user;
                    }
                }
            }
            //通过用户名获取数据
            public User GetByUsername(string username)
            {
                using (ISession session = Nhibernate.OpenSession())
                {
                    //ICriteria criteria = session.CreateCriteria(typeof(User));//限定表
                    //criteria.Add(Restrictions.Eq("Username", username));填加条件
                    //User user = criteria.UniqueResult<User>();/
                    //简化
                    User user = session.CreateCriteria(typeof(User)).Add(Restrictions.Eq("Username", username)).UniqueResult<User>();
                    return user;
                }
            }
            //删除数据
            public void Remove(User user)
            {
                using (ISession session = Nhibernate.OpenSession())//括号中为需要释放资源的代码在执行完毕后会自动释放资源
                {
                    using (ITransaction transaction = session.BeginTransaction())
                    {
                        session.Delete(user);//删除利用的是ID进行删除
                        transaction.Commit();
                    }
                }
            }
            //更新数据
            public void Update(User user)
            {
                using (ISession session = Nhibernate.OpenSession())//括号中为需要释放资源的代码在执行完毕后会自动释放资源
                {
                    using (ITransaction transaction = session.BeginTransaction())
                    {
                        session.Update(user);//根据主键进行更新
                        transaction.Commit();
                    }
                }
            }
            //多条件校验数据
            public bool VerifyUser(string username, string password)
            {
                using (ISession session = Nhibernate.OpenSession())
                {
                    
                    User user = session.CreateCriteria(typeof(User))
                        .Add(Restrictions.Eq("Username", username))
                        .Add(Restrictions.Eq("Password",password))
                        .UniqueResult<User>();
                    if (user == null)
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    }   
                }
            }
        }
    }

  • 使用 IUserManger manger = new UserManger();
                //manger.Add(user);
                //manger.Update(user);
                //manger.Remove(user);
                ////User user2 = manger.GetByUsername("dewe");
                //ICollection<User> users = manger.GetAllUsers();
                //foreach (var item in users)
                //{
                //    Console.WriteLine(item.Username+"---"+item.Password) ;
                //}
                Console.WriteLine(manger.VerifyUser("4","123"));
                Console.ReadKey();

    项目链接:https://pan.baidu.com/s/11cyLNbuAh8VJE5sD4pmHdw
    提取码:w1n0

     

     

     

相关文章: