Hibernate框架之Criteria 详解

转载自:Hibernate框架之Criteria 详解,请尊重原创!

一、criteria概念:

  1、Criteria 查询采用面向对象方式封装查询条件,又称为对象查询

  2、对SQL 语句进行封装
  3、采用对象的方式来组合各种查询条件
  4、由Hibernate 自动产生SQL 查询语句
  5、Criteria由Hibernate Session进行创建
 
、criteria的基本使用
  1.Criteria查询表达式:
SessionFactory sessionFactory = new Configuration().configure()
            .buildSessionFactory();
    Session session = sessionFactory.openSession();
    Criteria criteria = session.createCriteria(User.class);//创建Criteria对象

    List result = criteria.list();使用Criteria 的list()方法获得数据,list()方法返回List 实例

     Iterator it = result.iterator();
while (it.hasNext()) {
        User user = (User) it.next();
        System.out.println("用户名:" + user.getName());
    }
    session.close();
    sessionFactory.close();

  2.Criteria查询排序 :

  Criteria 查询不仅能组合出SQL中where子句的功能,还可以组合出排序查询功能
  使用org.hibernate.criterion.Order对结果进行排序
  排序的方法为:
  (1)asc()
  (2)desc()
  (3)查询语法
SessionFactory sessionFactory = new Configuration().configure()
        .buildSessionFactory();
Session session = sessionFactory.openSession();
Criteria criteria = session.createCriteria(House.class);//创建Criteria对象
//加入Order 条件
criteria.addOrder(Order.desc("price"));//以价格降序的方式排列

List result = criteria.list();
Iterator it = result.iterator();
while (it.hasNext()) {
    House house = (House) it.next();
    System.out.println("标题:" + house.getTitle() + "  价格"
            + house.getPrice());
}
session.close();
sessionFactory.close();

  3. Criteria查询实现分页 :

  
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Criteria criteria = session.createCriteria(House.class);//创建Criteria对象

criteria.setFirstResult(3);//设定查询返回结果的第一行数据的位置

criteria.setMaxResults(2);//限定查询返回数据的行数

List results = criteria.list();
Iterator it = results.iterator();
while(it.hasNext()){
    House h = (House)it.next();
    System.out.println("标题:"+h.getTitle()+ "  价格:"+h.getPrice());            
}
session.close(); 
sessionFactory.close();

三、Restrictions常用限定查询方法:

 

posted @ 2018-06-04 10:41  达摩院的BLOG  阅读(473)  评论(0编辑  收藏  举报