hibernate查询精典例子(HQL QBC QBE)

 //查询编号为”S0002”的提供商提供的所有商品所涉及的类别
 public void qryCategoriesBySupply(){
  Session session=this.getSession();
  List<Category>list=session
  .createQuery("select p.category from Product p where p.suppers.no=?")
  .setString(0, "S9002")
  .list();
  for(Category c:list){
   System.out.println(c.getName());
  }
  session.close();
 }
 //查询名称为”TCL SHE8533”的商品的每个提供商的编号、名称(部分属性查询)
 public void qryNumName(){
  //select p.suppers.no,p.suppers.name from Product p where p.name='kodako'
  //select s.no,s.name from Supper s where s.products.name='kodako'
  Session session=this.getSession();
  List list=session
  .createQuery("select p.suppers.no,p.suppers.name from Product p where p.name='kodako'")
  .list();
  for(Object obj:list){
   Object[] object=(Object[])obj;
   System.out.println(object[0]+":"+object[1]);
  }
  session.close();
 }
 //查询多于3种商品的类别信息(使用size函数处理)
 public void qryAboveThreeBySize(){
  //from Category c where c.products.size>=3
  Session session=this.getSession();
  List<Category> list=session
  .createQuery("from Category c where c.products.size>=3")
  .list();
  for(Category c:list){
   System.out.println(c.getName());
  }
  session.close();
 }
 //查询暂无供应商的商品信息(使用is Empty处理)
 public void qryProductByEmpty(){
  //from Product p where p.suppers is Empty
  Session session=this.getSession();
  List<Product> list=session
  .createQuery("from Product p where p.suppers is Empty")
  .list();
  for(Product p:list){
   System.out.println(p.getName());
  }
  session.close();
 }
 //查询至少有一个商品的类别信息(使用exists处理)
 public void qryCategoryByExists(){
  Session session=this.getSession();
  List<Category> list=session
  .createQuery("from Category c where exists(from c.products)")
  .list();
  for(Category c:list){
   System.out.println(c.getName());
  }
  session.close();
 }
 //查询可以提供某种商品的供应商信息(使用elements处理)
 public void qrySupplyByElements(){
  Session session=this.getSession();
  Product product=(Product)session.get(Product.class, "0002");
  List<Supper> list=session
  .createQuery("from Supper s where :product in elements(s.products)")
  .setEntity("product", product)
  .list();
  for(Supper s:list){
   System.out.println(s.getName());
  }
  session.close();
 }

------------------------------------------------

//使用QBC查询,价格在6800以下的商品
 public void qryProByQBC(){
  Session session=this.getSession();
  List<Product> list=session
  .createCriteria(Product.class)
  .add(Expression.gt("price", 6800f))
  .list();
  for(Product p:list){
   System.out.println(p.getName()+":"+p.getPrice());
  }
  session.close();
 }
 //使用QBE查询,价格为2680,名称为”富士 S6500” 的商品
 public void qryProByQBE(){
  Product product=new Product();
  product.setPrice(2680f);
  product.setName("富士 S6500");
  Session session=this.getSession();
  List<Product> list=session
  .createCriteria(Product.class)
  .add(Example.create(product))
  .list();
  for(Product p:list){
   System.out.println(p.getName()+":"+p.getPrice());
  }
  session.close();
 }
 //使用本地SQL,显示所有商品的商品名、价格以及类别信息,并降序排列
 public void qryProByNativeSQL(){
  Session session=this.getSession();
  List<Product> list=session
  .createSQLQuery("select p.product_name,p.product_price,c.category_name from products as p,categories as c where c.category_id=p.category_id order by p.product_price desc")
  .list();
  for(Object obj:list){
   Object[] object=(Object[])obj;
   System.out.println(object[0]+":"+object[1]+":"+object[2]);
  }
  session.close();
 }
 //将商品按价格升序排列后,取第三页的记录,(每页显示2条记录)
 public void qryProPaging(){
  Session session=this.getSession();
  List<Product> list=session
  .createQuery("from Product p order by p.price asc")
  .setFirstResult(4)
  .setMaxResults(3)
  .list();
  for(Product p:list){
   System.out.println(p.getName()+":"+p.getPrice());
  }
  session.close();
 }

---------------------------------------------

//查询所有类别的名字,及该类别包含的商品数量 (使用group by ,count函数)select c.products.size from Category c
 
 public void qryCategoryAndChildCount()
 {
  Session session=this.getSession();
  List list=session
  .createQuery("select p.category.name count(p.no) from Product p grop by p.category.name")
  .list();
  for(Object obj:list){
   Object[] object=(Object[])obj;
   System.out.println("类别名:"+object[0]+"类别包含商品的数量为:"+object[1]);
  }
  session.close(); 
 }
 //批处理将某个类别下的商品修改为现有的另一个类别。
 public void updateProductsToAnotherCategory(){
  //update product p set p.category=:c where p.category.name=?
  Session session=this.getSession();
  Category c=(Category)session.get(Category.class, 2);
  session
  .createQuery("update Product p set p.category=:c where p.category.id=1")
  .setEntity("c", c)
  .executeUpdate();
  session.close();
 }
 public void qryUniqueProduct(){
  //往数据库中初始化3个名称相同的商品(其他字段自行设置)。
  //要求:查询所有商品,如果多个商品的名称相同,则取其中任意一个完整的商品信息
  Session session=this.getSession();
  List<Product>list=session
  .createQuery("from Product p where p.no in (select max(p.no) from Product p group by p.name)")
  .list();
  for(Product p:list){
   System.out.println(p.getNo()+p.getName());
  }
  session.close();
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值