自从学数据库以来,从SQL查询-HQL查询-到Criteria 查询。有人问我:掌握一种查询语句不就可以吗,为什么还要学Criteria 查询?我回答道:用到特定于数据库的SQL 语句,程序本身会依赖于特定的数据库,不了解SQL 语句,恐怕对使用HQL带来困难。Hibernate提供的Criteria查询帮助我们解决了这种问题。

下面介绍一下Criteria查询。

1、Criteria 查询采用面向对象方式封装查询条件,又称为对象查询
2、对SQL 语句进行封装
3、采用对象的方式来组合各种查询条件
4、由Hibernate 自动产生SQL 查询语句
5、Criteria由Hibernate Session进行创建
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();

Criteria查询排序 :

Criteria 查询不仅能组合出SQL中where子句的功能,还可以组合出排序查询功能
使用org.hibernate.criterion.Order对结果进行排序
排序的方法为:
1、asc()
2、desc()
Criteria查询排序 语法:
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();

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

您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 

如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦   

如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 2276292708@qq.com

如果需要转载,请注明出处,谢谢!!

  

最新文章

  1. dubbox升级spring到4.x及添加log4j2支持
  2. 蜕变·WebRebuild 2013 前端年度交流会邀请
  3. Unity3D脚本语言UnityScript初探
  4. VBA相关
  5. SQL批量修改表名
  6. ORM之PetaPoco错误--VS中NUGet程序包管理安装PetaPoco
  7. TsFltMgr.sys系统蓝屏的原因就在于QQ电脑管家!
  8. Mybatis实战之自定义TypeHandler处理枚举
  9. 使用Jquery.js框架和CSS3实现3D相册的制作
  10. 《java.util.concurrent 包源码阅读》 结束语
  11. python socket.error: [Errno 24] Too many open files
  12. es6 语法 (set 和 map)
  13. BZOJ1444[Jsoi2009]有趣的游戏——AC自动机+概率DP+矩阵乘法
  14. 迅为IMX6核心板兼容工业级、商业扩展级、Plus版本核心板
  15. 哨兵查找法(明解c语言) + 函数式宏
  16. 关于c#除法运算的问题
  17. DevOps Workshop 研发运维一体化(北京第二场) 2016.04.27
  18. win10开机 依赖服务或组无法启动
  19. 找到MySQL配置文件默认路径
  20. 优秀 H5 案例收集 vol.4(不定期更新)

热门文章

  1. C#程序如何把窗体文件从从一个项目中复制到另一个项目
  2. SpringMVC 学习笔记(五) 基于RESTful的CRUD
  3. 另类创业招聘(REV#2)
  4. Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=
  5. Hibernate - Query简易
  6. 2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)V - Gears
  7. HDU 5763Another Meaning
  8. android developer官网不能打开怎么办
  9. BZOJ_1115_[POI2009]石子游戏Kam_博弈论
  10. python-----重命名文件(在原文件名前加0)