zoukankan      html  css  js  c++  java
  • 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
    
    如果需要转载,请注明出处,谢谢!!
    

      

  • 相关阅读:
    ACM学习历程—UESTC 1218 Pick The Sticks(动态规划)(2015CCPC D)
    ACM学习历程—UESTC 1217 The Battle of Chibi(递推 && 树状数组)(2015CCPC C)
    A*算法的实现
    codevs1011 数的计算 2001年NOIP全国联赛普及组
    一场ACM一场梦——我的一年
    HDU 4422 The Little Girl who Picks Mushrooms ( 模拟)
    HDU4277 USACO ORZ(dfs+set)
    HDU4272LianLianKan(dfs)
    HDU4268 Alice and Bob(贪心+multiset)
    hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online
  • 原文地址:https://www.cnblogs.com/wlx520/p/4708624.html
Copyright © 2011-2022 走看看