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常用限定查询方法: