首页 > 学院 > 开发设计 > 正文

Hibernate框架之Criteria 详解

2019-11-15 01:03:55
字体:
来源:转载
供稿:网友
Hibernate框架之Criteria 详解

自从学数据库以来,从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如果需要转载,请注明出处,谢谢!!

  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表