⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thirdcategorydao.java

📁 一个网上购物商城系统
💻 JAVA
字号:
package tarena.dao.pages;

import java.math.BigInteger;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;

import javax.servlet.http.Cookie;

import tarena.dao.BaseHibernateDAO;
import tarena.dao.ProductDAO;
import tarena.data.AbractBrand;
import tarena.data.AbractProduct;
import tarena.global.CookieOperate;
import tarena.global.PublicParameter;
import tarena.global.Transform;

@SuppressWarnings("unchecked")
public class ThirdCategoryDAO extends BaseHibernateDAO {
	
	/**
	 * 列出三级分类下的商品数
	 * @param categoryid
	 * @return
	 */
	public Long listProductNumByCategory(int categoryid){
		StringBuffer hql = new StringBuffer();
		hql.append("select count(*) from Product p where p.category.id=?");
		return (Long)getSession()
									.createQuery(hql.toString())
									.setParameter(0, categoryid)
									.list().get(0);
	}
	
	/**
	 * 列出三级分类下的某品牌的商品数
	 * @param categoryid
 	 * @param brandid
	 * @return
	 */
	public Long listProductNumByCategoryAndBrand(int categoryid,int brandid){
		if(brandid==-1){
			return listProductNumByCategory(categoryid);
		}
		StringBuffer hql = new StringBuffer();
		hql.append("select count(*) from Product p where p.category.id=? and p.brand.id=?");
		return (Long)getSession()
									.createQuery(hql.toString())
									.setParameter(0, categoryid)
									.setParameter(1, brandid)
									.list().get(0);
	}
	
	/**
	 * 查询指定三级分类下的所有的商品的品牌以及该品牌的商品数。
	 * @param categoryid 顶级分类id
	 * @return AbractCategory类型的集合
	 */
	
	public List<AbractBrand> listAllBrandWithProductCount(int categoryid){
		StringBuffer sql=new StringBuffer();
		sql.append("select b.id,b.en_name,b.cn_name,count(*) from ");
		sql.append("brand b, product p ");
		sql.append("where b.id=p.bid and p.cid=? ");
		sql.append("group by p.bid ");		
		List<Object[]> result=  getSession()
								.createSQLQuery(sql.toString())	
								.setParameter(0, categoryid)
								.list();
		List<AbractBrand> brands=new Vector<AbractBrand>();
		for(Object[] datas :result){
			brands.add(new AbractBrand((Integer)datas[0],
										datas[1].toString(),
										datas[2].toString(),
										((BigInteger)datas[3]).intValue()));
		}
		return brands;
	
	}
	
	/**
	 * 查询指定三级分类下的某段时间内商品销售排行。
	 * @param categoryid 顶级分类id
	 * @param num 要显示的结果数
	 * @param begin 开始的日期 日期格式为:'yyyy-MM-dd'
	 * @param end 结束的日期 日期格式为:'yyyy-MM-dd'
	 * @return AbractCategory类型的集合
	 */
	
	public List<AbractProduct> listHotSaleProduct(int categoryid,int num,String begin,String end){
		StringBuffer sql=new StringBuffer();
		sql.append("select p.id,p.pname,p.price ");
		sql.append("from product p,transaction t,orders o ");
		sql.append("where (p.id=t.pid) and (t.oid=o.id) and (p.cid=?) ");
		sql.append("and (o.ordertime between date ? and date ?) ");
		sql.append("order by p.salepopluarity ");
		List<Object[]> result=  getSession()
								.createSQLQuery(sql.toString())	
								.setParameter(0, categoryid)
								.setParameter(1, begin)
								.setParameter(2, end)
								.setFirstResult(0)
								.setMaxResults(num)
								.list();
		//List<AbractBrand> brands=new Vector<AbractBrand>();
		List<AbractProduct> products=new Vector<AbractProduct>();
		for(Object[] datas :result){
			products.add(new AbractProduct((Integer)datas[0],
											datas[1].toString(),
											(Double)datas[2]));
		}
		return products;	
	}
	
	/**
	 * 查询指定三级分类下的某段时间内商品关注排行。
	 * @param categoryid 顶级分类id
	 * @param num 要显示的结果数
	 * @param begin 开始的日期 日期格式为:'yyyy-MM-dd'
	 * @param end 结束的日期 日期格式为:'yyyy-MM-dd'
	 * @return AbractCategory类型的集合
	 */
	
	public List<AbractProduct> listHotAttentionProduct(int categoryid,int num,String begin,String end){
		StringBuffer sql=new StringBuffer();
		sql.append("select p.id,p.pname,p.price,count(pa.id) n ");
		sql.append("from product p , productattention pa ");
		sql.append("where pa.pid=p.id and p.cid=? ");
		sql.append("and pa.attentiontime between date '"+begin+"' and date '"+end+"' ");
		sql.append("group by p.id ");
		sql.append("order by n desc ");
		List<Object[]> result=  getSession()
								.createSQLQuery(sql.toString())	
								.setParameter(0, categoryid)
								//.setParameter(1, begin)
								//.setParameter(2, end)
								.setFirstResult(0)
								.setMaxResults(num)
								.list();
		//System.out.println(result.size());
		List<AbractProduct> products=new Vector<AbractProduct>();
		for(Object[] datas :result){
			products.add(new AbractProduct((Integer)datas[0],
											datas[1].toString(),
											(Double)datas[2]));
		}
		return products;
	}
	
	
	/**
	 * 列出用户最近的浏览记录
	 * @param cookies 用户的cookies
	 * @return 返回List类型的AbractProduct
	 */
	public List<AbractProduct> listUserLastViewProduct(Cookie[] cookies){
		List<AbractProduct> products = null;
		Cookie cookie = CookieOperate.FindCookie(PublicParameter.cookie_view_products, cookies);
		if(cookie!=null){
			String ids = cookie.getValue();
			ProductDAO productDAO = new ProductDAO();
			StringTokenizer tokenizer = new StringTokenizer(ids,",");
			while(tokenizer.hasMoreTokens()){
				Integer id = Transform.StringToInteger(tokenizer.nextToken());
				if(id!=-1){
					AbractProduct product = productDAO.listProductByID(id);
					if(product!=null)
						products.add(product);
				}				
			}
		}
		return products;
	}
	
	/**
	 * 查询指定三级分类下的所有商品,并分页显示。
	 * @param categoryid 三级分类id
	 * @param num	每页显示的商品数
	 * @param page	显示第几页,从第1页开始
	 * @param priceorder 按价格排序,合法参数有:desc,asc,null
	 * @return AbractProduct类型的集合
	 */
	public List<AbractProduct> listAllProductByCategory(int categoryid,
														int num,
														int page,
														int brandid,														
														String priceorder){
		if(priceorder==null) priceorder="";
		else if(!priceorder.equals("asc")) priceorder="desc";
		StringBuffer hql=new StringBuffer();
		hql.append("select new tarena.data.AbractProduct(p.id,p.pname,p.price,p.viewpopluarity) ");
		hql.append("from Product p ");
		hql.append("where p.category.id=? ");
		if(brandid!=-1){
			hql.append(" and p.brand.id="+brandid);
		}
		hql.append(" order by p.price "+priceorder+" ");
		return getSession()
				.createQuery(hql.toString())
				.setParameter(0, categoryid)
				.setFirstResult(page-1)
				.setMaxResults(num)
				.list();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -