//查询编号为”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();
}