导航

Hibernate QBC

Posted on 2017-09-29 16:48  耍流氓的兔兔  阅读(182)  评论(0编辑  收藏  举报

 

QBC查询:

  Query By Criteria

  使用面向对象的方式查询

  和HQL单表查询相似,但不包含别名查询和具名查询

    1 全表查询

   Criteria ce = session.createCriteria(Customer.class);
  List<Customer> list = ce.list();
  
  
for(Customer customer : list) {     System.out.println(customer);   }

  2 条件查询

  Criteria ce = session.createCriteria(Order.class);
  ce.add(Restrictions.eq("orderno", "111"));
    List<Order> list = ce.list();

  Criteria ce = session.createCriteria(Order.class);
  ce.add(Restrictions.and(
    Restrictions.like("orderno", "%111%"),
    Restrictions.like("productName", "%手机%")

  ));
   
  List<Order> list = ce.list();

   3 分页查询

   Criteria ce = session.createCriteria(Order.class);
 
//分页   ce.setFirstResult(0);   ce.setMaxResults(5);   
  List
<Order> list = ce.list();

  4 查询排序

  Criteria ce = session.createCriteria(Order.class);
            
  ce.addOrder(org.hibernate.criterion.Order.desc("id"));
            
  List<Order> list = ce.list();

  5 聚合查询

  Criteria ce = session.createCriteria(Order.class);
            
  /*ce.setProjection(Projections.rowCount());
  Long count = (Long)ce.uniqueResult();*/
            
  ce.setProjection(Projections.max("id"));
  Integer count = (Integer)ce.uniqueResult();
            
  System.out.println(count);

  6 投影查询

   Criteria ce = session.createCriteria(Order.class);
    
  ProjectionList pList
= Projections.projectionList();   pList.add(Property.forName("orderno"));   pList.add(Property.forName("productName"));   ce.setProjection(pList);   List<Object[]> list = ce.list();   for(Object[] order : list) {      for(Object column : order) {         System.out.print(column);         System.out.print(" ");      }     System.out.println();   }