?? rootcategorydao.java
字號:
/**
* @(#)tarena.data.CategoryList.java 2008-11-10
* Copy Right Information : Tarena
* Project : xindou
* JDK version used : jdk1.6.4
* Comments : 此處輸入簡單類說明
* Version : 1.0
* Sr Date Modified By Why & What is modified
* 1. 2008-11-10 陳達 新建
**/
package com.shop.dao.common;
import java.math.BigInteger;
import java.util.List;
import java.util.Vector;
import com.shop.dao.BaseHibernateDAO;
import com.shop.data.AbractCategory;
import com.shop.data.AbractProduct;
@SuppressWarnings(value="unchecked")
public class RootCategoryDAO extends BaseHibernateDAO {
/**
* 查詢頂級分類下的按商品銷售的排行個數。
* @param categoryid 頂級分類id
* @param num 查詢的個數。
* @return AbractCategory類型的集合。
*/
public List<AbractProduct> listHotProductByTop(int categoryid,int num){
StringBuffer hql = new StringBuffer();
hql.append("select new tarena.data.AbractProduct(p.id,p.pname,p.price) from Product p ");
hql.append("where p.category.parentid in (select c.id from Category c where c.parentid=?) ");
hql.append("order by p.salepopluarity desc");
return getSession()
.createQuery(hql.toString())
.setParameter(0, categoryid)
.setFirstResult(0)
.setMaxResults(num)
.list();
}
/**
* 查詢指定頂級分類下的三級分類,并按該三級分類下的商品關注度總和排行
* @param categoryid 頂級分類id
* @param num 返回查詢結果的個數
* @return AbractCategory類型的集合
*/
public List<AbractCategory> listHotThirdCategoryByTop(int categoryid,int num){
StringBuffer sql=new StringBuffer();
sql.append("select thd.tid,thd.tname,sum(p.viewpopluarity) hot from ");
sql.append("(select cat.id as tid,cat.cname as tname from");
sql.append("(select id as pid from category where parentid=?) two ");
sql.append("left join category cat on (cat.parentid=two.pid) and (cat.ctype=3)) thd,");
sql.append("product p where (p.cid=thd.tid) ");
sql.append("group by thd.tid ");
sql.append("order by hot desc ");
List<Object[]> result= getSession().createSQLQuery(sql.toString())
.setParameter(0, categoryid)
.setFirstResult(0)
.setMaxResults(num)
.list();
List<AbractCategory> re=new Vector<AbractCategory>();
for(int i=0;i<result.size();i++){
Object [] data=result.get(i);
re.add(new AbractCategory((Integer)data[0],data[1].toString()));
}
return re;
//return null;
}
/**
* 查詢指定二級分類下的三級分類,并按該三級分類下的商品關注度總和排行,顯示商品個數。
* @param categoryid 頂級分類id
* @return AbractCategory類型的集合
*/
public List<AbractCategory> listHotThirdCategoryBySecond(int categoryid){
StringBuffer sql=new StringBuffer();
sql.append("select cat.id,cat.cname ,count(*) n from ");
sql.append("(select id,cname from category where parentid=? and ctype=3) cat left outer join product p ");
sql.append("on (p.cid=cat.id) group by cat.id order by n desc");
List<Object[]> result= getSession().createSQLQuery(sql.toString())
.setParameter(0, categoryid)
.list();
List<AbractCategory> re=new Vector<AbractCategory>();
for(int i=0;i<result.size();i++){
Object [] data=result.get(i);
re.add(new AbractCategory((Integer)data[0],data[1].toString(),((BigInteger)data[2]).intValue()));
}
return re;
}
/**
* 查詢指定一級分類下的二級分類。
* @param categoryid 頂級分類id
* @return AbractCategory類型的集合
*/
public List<AbractCategory> listSecondCategoryByTop(int categoryid){
StringBuffer hql=new StringBuffer();
hql.append("select new com.shop.data.AbractCategory(id,cname) from Category c where c.parentid=? and c.ctype=2");
return getSession()
.createQuery(hql.toString())
.setParameter(0, categoryid)
.list();
}
/**
* 查找指定三級分類的熱門商品。
* @param categoryid 頂級分類id
* @param num 顯示的結果數
* @return AbractProduct類型的集合
*/
public List<AbractProduct> listProductByCategory(int categoryid,int num){
StringBuffer hql=new StringBuffer();
hql.append("select new tarena.data.AbractProduct(p.id,p.pname,p.price) from Product p ");
hql.append("where p.category.id=? order by p.viewpopluarity");
return getSession()
.createQuery(hql.toString())
.setParameter(0, categoryid)
.setFirstResult(0)
.setMaxResults(num)
.list();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -