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

📄 psearchdao.java

📁 基于struts+hibernate的电子商务网站。可运行。数据库mysql
💻 JAVA
字号:
package tarena.dao.pages;

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

import tarena.dao.BaseHibernateDAO;
import tarena.dao.CategoryDAO;
import tarena.dao.ProductDAO;
import tarena.data.AbractCategory;
import tarena.data.Page;
import tarena.entity.Product;

@SuppressWarnings("unchecked")
public class PSearchDAO extends BaseHibernateDAO {
	private List<Product> listMatchedProductBy3Category(int categoryid,String keyword){		
		StringBuffer hql=new StringBuffer();
			if(keyword==null||keyword.equals("")){
				hql.append("from Product p where ");
				hql.append("p.category.id="+categoryid);
			}else{
				hql.append("from Product p where ");
				if(categoryid!=0){					
					hql.append("p.category.id="+categoryid+" and ");
				}
				hql.append("(p.pname like '%"+keyword+"%' or ");
				hql.append("p.ptype like '%"+keyword+"%' or ");
				hql.append("p.warranty like '%"+keyword+"%' or ");
				hql.append("p.remark like '%"+keyword+"%' or ");
				hql.append("p.summary like '%"+keyword+"%' or ");
				hql.append("p.norm like '%"+keyword+"%')");
			}
		return getSession()
				.createQuery(hql.toString())
				/*.setFirstResult(page-1)
				.setMaxResults(num)*/
				.list();
	}	
		
	private List<Product> listMatchedProductBy2Category(int categoryid,String keyword){
		StringBuffer hql=new StringBuffer();
		if(keyword==null){
			keyword="";
		}
		hql.append("select p.id from product p,category c ");
		hql.append("where p.cid=c.id and c.parentid="+categoryid);
		hql.append(" and (p.pname like '%"+keyword+"%' or ");
		hql.append("p.ptype like '%"+keyword+"%' or ");
		hql.append("p.warranty like '%"+keyword+"%' or ");
		hql.append("p.remark like '%"+keyword+"%' or ");
		hql.append("p.summary like '%"+keyword+"%' or ");
		hql.append("p.norm like '%"+keyword+"%')");
		
		List<Integer> ids= getSession()
						.createSQLQuery(hql.toString())
						/*.setFirstResult(page-1)
						.setMaxResults(num)*/
						.list();
		List<Product> p=new Vector<Product>();
		for(Integer id:ids){
			Product pro=new ProductDAO().findById(id);
			p.add(pro);
		}
		return p;
	}
	
	private List<Product> listMatchedProductBy0Category(int categoryid,String keyword){
		StringBuffer hql=new StringBuffer();
		if(keyword==null){
			keyword="";
		}
		hql.append("from Product p where ");
		hql.append("p.pname like '%"+keyword+"%' or ");
		hql.append("p.ptype like '%"+keyword+"%' or ");
		hql.append("p.warranty like '%"+keyword+"%' or ");
		hql.append("p.remark like '%"+keyword+"%' or ");
		hql.append("p.summary like '%"+keyword+"%' or ");
		hql.append("p.norm like '%"+keyword+"%')");
		
		return  getSession()
				.createQuery(hql.toString())
				/*.setFirstResult(page-1)
				.setMaxResults(num)*/
				.list();
		/*List<Product> p=new Vector<Product>();
		for(Integer id:ids){
			Product pro=new ProductDAO().findById(id);
			p.add(pro);
		}
		return p;*/
	}
	
	
	private List<Product> listMatchedProductBy1Category(int categoryid,String keyword){
		StringBuffer hql=new StringBuffer();
		if(keyword==null){
			keyword="";
		}
		hql.append("select p.id from product p,category c ");
		hql.append("where p.cid=c.id and c.parentid in (select id from category where parentid="+categoryid+") ");
		hql.append(" and (p.pname like '%"+keyword+"%' or ");
		hql.append("p.ptype like '%"+keyword+"%' or ");
		hql.append("p.warranty like '%"+keyword+"%' or ");
		hql.append("p.remark like '%"+keyword+"%' or ");
		hql.append("p.summary like '%"+keyword+"%' or ");
		hql.append("p.norm like '%"+keyword+"%')");
		
		List<Integer> ids= getSession()
						.createSQLQuery(hql.toString())
						/*.setFirstResult(page-1)
						.setMaxResults(num)*/
						.list();
		List<Product> p=new Vector<Product>();
		for(Integer id:ids){
			Product pro=new ProductDAO().findById(id);
			p.add(pro);
		}
		return p;
	}
	/**
	 * 搜索所有商品,不分页。
	 * @param categoryid
	 * @param keyword
	 * @return
	 */
	public List<Product> listMatchedProduct(int categoryid,String keyword){
		CategoryDAO cdao=new CategoryDAO();
		int ctype;
		try {
			ctype = cdao.findById(categoryid).getCtype();
		} catch (RuntimeException e) {
			ctype = 0;
		}
		List<Product> re=null;
		switch (ctype){
		case 1:
			re=listMatchedProductBy1Category(categoryid, keyword);
			break;
		case 2:
			re=listMatchedProductBy2Category(categoryid, keyword);
			break;
		case 3:
			re=listMatchedProductBy3Category(categoryid, keyword);
			break;
		default:
			re=listMatchedProductBy0Category(categoryid, keyword);
			break;
		}
		return re;
	}
	
	/**
	 * 利用分页搜索商品。
	 */
	public List<Product> listMatchedProductUsePaging(int categoryid,String keyword, int num, int page){
		List<Product> all=listMatchedProduct(categoryid, keyword);
		int fromIndex=(page-1)*num;
		int toIndex=page*num;
		return all.subList(fromIndex>all.size()?0:fromIndex, toIndex>all.size()?all.size():toIndex);
	}
	
	
	public List<AbractCategory> listMatchedCategory(int categoryid,String keyword){
		CategoryDAO cdao=new CategoryDAO();
		int ctype;
		try {
			ctype = cdao.findById(categoryid).getCtype();
		} catch (RuntimeException e) {
			ctype=0;
		}
		
		StringBuffer hql=new StringBuffer();
		if(keyword==null){
			keyword="";
		}
		
		hql.append("select c.id,c.cname,count(*) from product p,category c ");
		
		switch (ctype){
		case 3:
			hql.append("where p.cid=c.id and c.id="+categoryid);
			break;
		case 2:
			hql.append("where p.cid=c.id and c.parentid="+categoryid);
			break;
		case 1:
			hql.append("where p.cid=c.id and c.parentid in (select id from category where parentid="+categoryid+") ");
			break;
		default:
			hql.append("where p.cid=c.id ");
			break;
		}
		hql.append(" and (p.pname like '%"+keyword+"%' or ");
		hql.append("p.ptype like '%"+keyword+"%' or ");
		hql.append("p.warranty like '%"+keyword+"%' or ");
		hql.append("p.remark like '%"+keyword+"%' or ");
		hql.append("p.summary like '%"+keyword+"%' or ");
		hql.append("p.norm like '%"+keyword+"%')");
		hql.append(" group by c.id");
		
		List<Object[]> datas= getSession()
						.createSQLQuery(hql.toString())						
						.list();
		List<AbractCategory> c=new Vector<AbractCategory>();
		for(Object[] objs:datas){
			c.add(new AbractCategory((Integer)objs[0],objs[1].toString(),((BigInteger)objs[2]).intValue()));
		}
		return c;
	}
	
	/**
	 * 分页结果。
	 * @param categoryid
	 * @param keyword
	 * @param page
	 * @param num
	 * @return
	 */
	public List<Page> listPageLinks(int categoryid,String keyword,int page,int num){
		int total=listMatchedProduct(categoryid, keyword).size();
		int pages=total%num==0?total/num:(total/num+1);
		List<Page> re=new Vector<Page>();
		
		if(page==1){
			re.add(new Page("第一页",null));
			re.add(new Page("上一页",null));
		}else{
			re.add(new Page("第一页","psearch.htm?cid="+categoryid+"&word="+keyword+"&page=1"));
			re.add(new Page("上一页","psearch.htm?cid="+categoryid+"&word="+keyword+"&page="+(page-1)));
		}	
		
		if(page==pages){
			re.add(new Page("下一页",null));
			re.add(new Page("最后一页",null));
		}else{
			re.add(new Page("下一页","psearch.htm?cid="+categoryid+"&word="+keyword+"&page="+(page+1)));
			re.add(new Page("最后一页","psearch.htm?cid="+categoryid+"&word="+keyword+"&page="+pages));
		}
				
		re.add(new Page(total+"",null));
		re.add(new Page(pages+"",null));
		re.add(new Page(page+"",null));
		re.add(new Page(page+"","psearch.htm?cid="+categoryid+"&word="+keyword));
		return re;
	}
}

⌨️ 快捷键说明

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