Nhibernate的条件查询ICriteria

从 ISession 接口中创建 ICriteria 实例对象;在这个 ICriteria 实例对象上设置
一个或多个表达式;要求 ICriteria 接口返回需要的列表,就是根据表达式从数据库中返回
对象

1.创建 ICriteria 实例

使用 ISession 接口的 CreateCriteria 方法创建了 NHibernate.ICriteria 接口一个特定的
持久化类的查询实例,也可以说 ISession 是用来制造 Criteria 实例的工厂

下面例子

返回 News对象集合,设置最大的集合数量为 50 条

public IList<News> CreateCriteria()
        {
            ICriteria crit = session.CreateCriteria(typeof(News));
            crit.SetMaxResults(50);
            IList<News> customers = crit.List<News>();
            return customers;
        }
Code language: HTML, XML (xml)

2.结果集限制

使用 ICriteria 接口提供的 Add 方法添加 Restrictions 类中约束表达式可以限制一些结果集的作用。

public IList<News> Narrowing()
        {
            //IList<News> news = session.CreateCriteria(typeof(News)).Add(Restrictions.Like("Title", "北%")).List<News>();
            IList<News> news = session.CreateCriteria(typeof(News))
                .Add(Restrictions.Like("Title", "北%"))
                .Add(Restrictions.Between("ID", 1, 100))
                .List<News>();
            return news;
        }
Code language: PHP (php)

3.结果集排序

使用 ICriteria.Order 对结果集排序,第二个参数 true 代表 asc, false 代表 desc。例如
下面例子查询 News对象按 Title降序、 Content升序。

 public IList<News> Order()
        {
            return session.CreateCriteria(typeof(News))
            .Add(Restrictions.Like("Title", "您%"))
            .AddOrder(new Order("Title", false))
            .AddOrder(new Order("Content", true))
            .List<News>();
        }
Code language: PHP (php)
public IList<News> Order()
        {
            return session.CreateCriteria(typeof(News))
            .Add(Restrictions.Like("Title", "您%"))
            .AddOrder(new Order("ID", false))
            .AddOrder(new Order("AddTime", true))
            .List<News>();
        }
Code language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注