Hibernate 之 Criteria 自我学习

来源:互联网 发布:淘宝客服自动分流不均 编辑:程序博客网 时间:2024/05/18 07:39

hibernate 的QBC查询

一,三个工具类

1,Projection类,作用:对查询结果进行统计(count)、分组(group)、求平均值(avg)、求最大值(max)、求最小值(min)、求合计(sum)。

      ep:

      public void bookProjection(){

        //获得session

       Session  session=SessionFactory.getSession();

      //创建Criteria,Book为图书类

      Criteria  criteria=session.createCriteria(Book.class);

       //构建ProjectionList 对象

        ProjectionList  pList=Projections.projectionList();

      //创建分组依据

     //安出版社分组

       pList.add(Projections.groupProperty("publishers"));

        }

      //统计各分组的的总记录数

        pList.add(Projections.rowCount());

     //各组的图书总价格

       pList.add(Projecttions.sum("prices"));

     //提交Projection给Criteria

      criteria.setProjection(pList);

      //执行查询获得结果

    List list=criteria.list();

    //迭代结果

     Iterator iterator=list.iterator();

   //遍历查询结果

    while(iterator.hasNext()){

     Object[] object=(Object[])iterator.nest();

       Publishers  publishers=(Publishers)object[0];

      System.out.println("出版社名称:"+publishers.getName()+"  图书总数:" +object[1]+"   价格总和:" +object[2])

      }

2,Restrictions类,作用:对查询条件进行封装,如Restrictions.eq(等于)、Restrictions.allEq(使用Map,使用key / value 进行多个等于比较)、

       Restrictions.gt(大于>)、Restrictions.ge(大于等于>=)、Restrictions.lt(小于<)、Restrictions.le(小于等于<=)、Restrictions.between(相当于sql中的between·)、

       Restriction.like(相当于sql中的like)、Restrictions.in(相当于sql中的in)、Restrictions.and(and关系)、Restrictions.or(or关系)、Restrictions.sqlRestriction(SQL限定查                    询)。

            ep:public void  likeBook(Book book){

             //获得session

                 Session session=SessionFactory.getSession();

               //创建查询所有图书的Criteria

              Criteria criteria=session.createCriteria(Book.class);

            //使用Restrictions对象编写查询条件,并将查询条件加入Criteria对象

           if( book!=null){

              if(book.getTitle()!=null&&!book.getTitle().equals("")){

                //  按书名进行筛选

                criteria.add(Restrictions.like("title",book.getTitle(),Match.ANYWHERE));

                 

               }    

                     List   list=criteria.list();

                  //遍历查询结果

                         Iterator iterator=list.iterator();

                         while(iterator.hasNext()){

                         Book   book=list.next();

                          System.out.println( book.getTitle()+book.getAuthor());

                                }

                 }


              }




3,Order类,对结果设置排序方法 Order.asc(升序),Order.desc(降序)

    ep; public void bookOrder(){

       //获得session

         Session session=SessionFactory.getSession();

       //创建查询所有图书的Criteria

      Criteria criteria=session.createCriteria(Book.class);

      //对结果按id升序排序

     criteria.addOrder(Order.asc("id"));


        }



原创粉丝点击