C# NHibernate MySQL 搭建与简单增删改查
2018-06-01 14:58
417 查看
hibernate.cfg.xml <?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="dialect">NHibernate.Dialect.MySQL5Dialect</property><!--配置版本--> <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property><!--配置驱动--> <!--配置链接--> <property name="connection.connection_string">Server=localhost;Port=3306;Database=mygamedb;User ID=root;Password=root;</property> <property name="show_sql">true</property> </session-factory> </hibernate-configuration>
User.hbm.xml <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="XpLearning" namespace="XpLearning.Model"> <class name="User" table="users"> <id name="Id" column="id" type ="Int32"> <!--主键特殊标识,因其自增特点,加上generator属性,并由自身自增所以时native--> <generator class="native"></generator> <!--在根据id号删除的时候,无法找到id,需进一步研究--> </id> <property name="Username" column="userid" type="String"></property> <property name="Password" column="passwd" type="String"></property> <property name="Registedate" column="registedate" type="Date"></property> </class> <!--name与类中的属性对应, colume与表中的元素对应,type与NHibernate中的类型对应--> </hibernate-mapping>
User.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace XpLearning.Model { class User { public virtual Int32 Id { set; get; } public virtual string Username { set; get; } public virtual string Password { set; get; } public virtual DateTime Registedate { set; get; } } }
IUserManager.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using XpLearning.Model; namespace XpLearning.Manager { interface IUserManager { void AddUser(User user); void RemoveUser(User user); void UpDateUser(User user); User GetUserById(int id); User GetUserByName(string name); ICollection<User> GetUsers(); bool VerifyUser(string name, string password); } }
重点:
UserManager.cs using NHibernate; using NHibernate.Criterion; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using XpLearning.Model; namespace XpLearning.Manager { class UserManager:IUserManager { public void AddUser(Model.User user) { using (ISession session = NHibernateHelper.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { session.Save(user); transaction.Commit(); } } } public void RemoveUser(Model.User user) { using (ISession session = NHibernateHelper.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { session.Delete(user);//删除操作id号是关键 transaction.Commit(); //删除报错,找不到ID } } } public void UpDateUser(Model.User user) { using (ISession session = NHibernateHelper.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { session.Update(user);//更新操作id号是关键 transaction.Commit(); } } } public ICollection<Model.User> GetUsers() { using (ISession session = NHibernateHelper.OpenSession()) { //ICriteria criteria = session.CreateCriteria(typeof(User)); //criteria.Add(Restrictions.Eq("Username", name)); //User user = criteria.UniqueResult<User>(); IList<User> list = session.CreateCriteria(typeof(User)).List<User>(); return list; } } public Model.User GetUserById(int id) { User user = null; using (ISession session = NHibernateHelper.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { user = session.Get<User>(id);//此处ID为主键 transaction.Commit(); } } return user; } public Model.User GetUserByName(string name) { using (ISession session = NHibernateHelper.OpenSession()) { //ICriteria criteria = session.CreateCriteria(typeof(User)); //criteria.Add(Restrictions.Eq("Username", name)); //User user = criteria.UniqueResult<User>(); //UniqueResult<User>()方法:只返回第一个结果 //Add(Restrictions.Eq("Username", name)方法,添加查询条件 User user = session.CreateCriteria(typeof(User)).Add(Restrictions.Eq("Username", name)).UniqueResult<User>(); return user; } } public bool VerifyUser(string name, string password) { User user = null; using (ISession session = NHibernateHelper.OpenSession()) { user = session.CreateCriteria(typeof(User)) .Add(Restrictions.Eq("Username", name)) //这里的字符串与User类对应 .Add(Restrictions.Eq("Password", password)) .UniqueResult<User>(); } if(user == null) { return false; } else { return true; } } } }
Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NHibernate; using NHibernate.Cfg; using XpLearning.Model; using XpLearning.Manager; namespace XpLearning { class Program { static void Main(string[] args) { //Configuration configuration = new Configuration(); //configuration.Configure();//解析配置文件var configuration = new Configuration(); //configuration.AddAssembly("XpLearning"); ////Console.WriteLine("Init ok"); //ISessionFactory sessionFactory = null; //ISession session = null; //ITransaction transaction = null; //try //{ // sessionFactory = configuration.BuildSessionFactory(); // session = sessionFactory.OpenSession(); // transaction = session.BeginTransaction(); // User user1 = new User(){Username = "zhubajie", Password = "zhubajie"}; // session.Save(user1); // User user2 = new User() { Username = "zhubajie1", Password = "zhubajie" }; // session.Save(user2); // transaction.Commit(); //} //catch(Exception e) //{ // Console.Write(e); //} //finally //{ // if(transaction != null) // { // transaction.Dispose(); // } // if(session != null) // { // session.Close(); // } // if (sessionFactory != null) // { // sessionFactory.Close(); // } //} // User user = new User() { Id = 1, Username = "shaheshang", Password = "shaheshang" }; //User user = new User() { Id = 1}; UserManager userManager = new UserManager(); //userManager.AddUser(user); //userManager.RemoveUser(user); //User userGet = userManager.GetUserById(1); //User userGet = userManager.GetUserByName("tangseng"); //ICollection<User> list = userManager.GetUsers(); //foreach( User userGet in list) //{ // Console.WriteLine(userGet.Username); // Console.WriteLine(userGet.Id); //} //Console.WriteLine(userGet.Username); //Console.WriteLine(userGet.Id); bool pass1 = userManager.VerifyUser("kangkang", "kangkang"); bool pass2 = userManager.VerifyUser("kangkang1", "kangkang"); Console.WriteLine(pass1); Console.WriteLine(pass2); Console.ReadKey(); } } }
阅读更多
相关文章推荐
- MyBatis在eclipse环境下搭建+“Java+Mysql+Mybatis实现一个简单的图书信息录入”
- 通过JDBC进行简单的增删改查(以MySQL为例)
- C#编写简单的数据库增删改查(一)
- 简单搭建Mysql主从同步
- C# 对MongoDB 进行增删改查的简单操作实例
- 简单的mysql主从搭建及恢复
- node+express+mysql实现简单的数据增删改查
- php+mysql实现简单的增删改查功能
- C++和C#访问MySQL的简单代码示例
- ubuntu下使用nginx、mysql、python搭建一个简单的webserver
- Python3简单操作MySQL(增删改查)
- 通过JDBC进行简单的增删改查(以MySQL为例)
- 【mysql】【一些简单的增删改查的阶段总结】
- pymysql 连接 Mysql 数据库及 简单的增删改查操作
- NHibernate初学一之简单增删改查
- C#简单构架之EF进行读写分离+多数据库(Mysql/SqlService)
- c# 连接 mysql 以及实现简易增删改查
- mybatis+maven+mysql 项目简单搭建与junit空指针异常解决办法
- node+express+mysql实现简单的数据增删改查
- 虚拟机搭建CDH-第六讲-安装mysql第一种方法(比较简单)