zoukankan      html  css  js  c++  java
  • NHibernate学习(四)Session、Query 与 HQL

    NHibernate框架中实体对应数据库中的记录的操作:

    static ISessionFactory factory;

    static ILog logger;

    ISession session;

     

    Configuration config = new Configuration();

    Config.Configure();

    factory = config.BuildSessionFactory();

    session = factory.OpenSession();

    1、获取记录

    User user = (User)session.Get(typeof(User), 1);//数字1为对应数据库中记录的主键值IDUser为实体类的名称

     

    或者

    User user = session.Get<User>(1); //强类型方法,1为对应记录的ID

     

    2、保存记录

    session.Save(user);

     

    3、更新记录

    session.Update(user); 或者

    session.Save(user);//也可以更新记录时用Save()方法

     

    4、删除记录

    session.Delete(user);

     

    5、其它获取记录方法

    User user=(User)session.Load(typeof(user),1);

    或者:

    User user = session.Load<User>(5);//强类型方法

    这两个方法是假定所指定的实体类是存在的,即假定数据库存在这样的记录,否则会抛出不存在异常,而Get的两个方法不存在时返回null! 

     

    6HQLNHibernate Query Language

    //IQuery query = session.CreateQuery("from User");//User为映射数据中的表名的实体,数据库中表名为Users,项目中自成的对应实体名为User

    //或者 如:(只查询部分字段)

    //IQuery query = session.CreateQuery("select u.Id,u.FirstName  From User as u join u.Role as r where r.Id = 1 ");

     

    或者 如:(查询整个实体数据)

    IQuery query = session.CreateQuery("select u From User as u join u.Role as r where r.Id = 1 ");

    //通过连接选中实体u中的所有的属性 join 会自动 匹配 u.RoleId = r. RoleId

    IList<User> list = query.List<User>();//执行HQL,下面显示数据

    Console.WriteLine(list[0].FirstName);

    for (int i = 0; i < list.Count; i++)

    {

        Console.WriteLine(list[i].Id);

    }

    User user1 = list[0];

    Console.WriteLine(user1.FirstName);

     

    HQL中,我们可以应用where条件查询( =,>,< between ,in like, and ,or, is等)

    在选择部分字段时:字段大小写应该尽量跟属性名称保持一致,尤其是在使用别名的情况下,

    如:select u.FirstName

    在使用HQL时,同样可以利用聚合函数,如 select avg(u.Age),sum(u.Age)

    可以对记录进行排序 如:order by u.Id

    可以对记录进行分组 如:group by r.Id

     

  • 相关阅读:
    leetcode[164] Maximum Gap
    leetcode[162] Find Peak Element
    leetcode[160] Intersection of Two Linked Lists
    leetcode[156] binary tree upside down
    leetcode[155] Min Stack
    leetcode Find Minimum in Rotated Sorted Array II
    leetcode Find Minimum in Rotated Sorted Array
    leetcode Maximum Product Subarray
    ROP
    windbg bp condition
  • 原文地址:https://www.cnblogs.com/vihone/p/1732751.html
Copyright © 2011-2022 走看看