📄 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 + -