亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bookloaddaoimpl.java

?? 本系統實現了從五個網站上搜索的圖書進行整合后
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
package com.booksearch.dao;

import java.io.StringReader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;

import org.apache.log4j.Logger;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.booksearch.orm.Book;


/**
 * Class:BookLoadDaoImpl
 * Description:  從數據庫中獲得滿足條件的所有book實體對象和記錄總數
 * extens:HibernateDaoSupport
 * implements:BookLoadDao
 * @author  feng guang
 * @since   11/20/08
 */
public class BookLoadDaoImpl extends HibernateDaoSupport implements BookLoadDao {
    
	
    private Analyzer writerAnalyzer;
    
	private static final Logger logger;
	
	static 
    {
        logger = Logger.getLogger(com.booksearch.dao.BookLoadDaoImpl.class);
    }
	
	public void setWriterAnalyzer(Analyzer writerAnalyzer) {
		this.writerAnalyzer = writerAnalyzer;
	}

	/**
	* Function:  loadBook
	* Description: 從數據庫中獲得滿足條件的所有book實體對象
	* Calls:  no
	* Called By:  searchAction.execute()
	* @param bookName as String
	* @return ArrayList<Book>
	* @throws no
	*/
	public ArrayList<Book> loadBook(String keyword,String searchKind,int currPage,String rankKind) {
		
		 ArrayList<Book> list = null;
		 if("relavancy".equals(rankKind)){
			 
			 if("name".equals(searchKind)) list = this.loadBookByName(keyword, currPage);
			 else if("author".equals(searchKind))list = this.loadBookByAuthor(keyword, currPage);
			 else if("publisher".equals(searchKind))list = this.loadBookByPublisher(keyword, currPage);
			 else if("all".equals(searchKind)){
				 list = this.loadBookByName(keyword, currPage);
				 if(list.size()<10){
					 list.addAll(this.loadBookByAuthor(keyword, currPage)) ;
					 if(list.size()<10)
						 list.addAll(this.loadBookByPublisher(keyword, currPage)); 
				 }
			 }
		 }else{
			 list = this.loadBookByRank(keyword, searchKind, currPage, rankKind);
		 }
		 return list;
		        
	}
	/**
	* Function:  loadBookNum
	* Description: 從數據庫中獲得滿足條件的記錄總數
	* Calls:  no
	* Called By:  searchAction.execute()
	* @param bookName as String
	* @return long
	* @throws no
	*/
	public long loadBookNum(String keyword,String searchKind) {
		 //System.out.println("searchKind>>" + searchKind);
		 long recordNum = 0;
		 if("name".equals(searchKind))recordNum = this.loadBookNumByName(keyword);
		 else if("author".equals(searchKind))recordNum = this.loadBookNumByAuthor(keyword);
		 else if("publisher".equals(searchKind))recordNum = this.loadBookPublisherNum(keyword);
		 else if("all".equals(searchKind)){
              recordNum += this.loadBookNumByName(keyword);
              recordNum += this.loadBookNumByAuthor(keyword);
              recordNum += this.loadBookPublisherNum(keyword);
		 }
		 //System.out.println("recordNum>>" + recordNum);
		 return recordNum;
	}
	/**
	* Function:  loadAdvancedBook
	* Description: 從數據庫中獲得滿足高級搜索條件的記錄
	* Calls:      this.getSQL()
	* Called By:  AdvancedSearchAction.execute()
	* @param list as ArrayList<String>,currPage as int
	* @return ArrayList<Book>
	* @throws no
	*/
	public ArrayList<Book> loadAdvancedBook(String keyword,int currPage,String rankKind) {
		
		ArrayList<String> list = new ArrayList<String> ();
		StringTokenizer st = new StringTokenizer(keyword, "+");
		
		while (st.hasMoreElements()) {
			/*因為分詞之后會有一個是空的,所以進行一下判斷*/
			list.add(st.nextToken());
		}
//		
//		/*只包含書名時,按分類搜索中書名搜索進行*/
//		if("null".equals(list.get(1))&&"null".equals(list.get(2))
//				&&"null".equals(list.get(3))&&"null".equals(list.get(4))
//				&&"null".equals(list.get(5))&&"null".equals(list.get(6))
//				&&"null".equals(list.get(7))&&"null".equals(list.get(8))
//				&&"null".equals(list.get(9))&&!"null".equals(list.get(0))){
//			ArrayList<Book> listBook = this.loadBookByName(list.get(0).replace("20%", "+"), currPage);
//			return listBook;
//		}else if("null".equals(list.get(0))&&"null".equals(list.get(2))
//				&&"null".equals(list.get(3))&&"null".equals(list.get(4))
//				&&"null".equals(list.get(5))&&"null".equals(list.get(6))
//				&&"null".equals(list.get(7))&&"null".equals(list.get(8))
//				&&"null".equals(list.get(9))&&!"null".equals(list.get(1))){
//			ArrayList<Book> listBook = this.loadBookByAuthor(list.get(1).replace("20%", "+"), currPage);
//			return listBook;
//		}else if("null".equals(list.get(0))&&"null".equals(list.get(1))
//				&&"null".equals(list.get(2))&&"null".equals(list.get(4))
//				&&"null".equals(list.get(5))&&"null".equals(list.get(6))
//				&&"null".equals(list.get(7))&&"null".equals(list.get(8))
//				&&"null".equals(list.get(9))&&!"null".equals(list.get(3))){
//			ArrayList<Book> listBook = this.loadBookByPublisher(list.get(3).replace("20%", "+"), currPage);
//			return listBook;
//		}
        String tempRank = "";
		if("bookPublishTime".equals(rankKind))
			tempRank = " order by book.bookPublishTime desc ";
		else if("bookFixPrice".equals(rankKind))
			tempRank = " order by book.bookFixPrice asc ";	
        /*獲得查詢sql*/
	    String temp = this.getSQL(list);
		String sql = "select {book.*} from bookinfo book " + temp + tempRank;
		
		SQLQuery query = this.getSession().createSQLQuery(sql);
		query.addEntity("book", Book.class);
		/*設置分頁*/
        query.setFirstResult((currPage-1)*10);
        query.setMaxResults(10);
		ArrayList<Book> listBook = (ArrayList<Book>) query.list();

//		Iterator it1 = listBook.iterator();
//		Book book1 = null;
//		while (it1.hasNext()) {
//			book1 = (Book) it1.next();
//			System.out.println("bookName"+book1.getBookName()+"TIme"+book1.getBookPublishTime()+"Prince"+book1.getBookFixPrice());
//		}

		return (ArrayList<Book>) listBook;

	}
	/**
	* Function:  loadAdvancedBookNum
	* Description: 從數據庫中獲得滿足高級搜索條件的記錄總數
	* Calls:  this.getSQL()
	* Called By:  AdvancedSearchAction.execute()
	* @param list as ArrayList<String>
	* @return long
	* @throws no
	*/
	public long loadAdvancedBookNum(String keyword) {
		
		ArrayList<String> list = new ArrayList<String> ();
		StringTokenizer st = new StringTokenizer(keyword, "+");
		
		while (st.hasMoreElements()) {
			/*因為分詞之后會有一個是空的,所以進行一下判斷*/
			list.add(st.nextToken());
		}
//		/*只包含書名時,按分類搜索中書名搜索進行*/
//		if("null".equals(list.get(1))&&"null".equals(list.get(2))
//				&&"null".equals(list.get(3))&&"null".equals(list.get(4))
//				&&"null".equals(list.get(5))&&"null".equals(list.get(6))
//				&&"null".equals(list.get(7))&&"null".equals(list.get(8))
//				&&"null".equals(list.get(9))&&!"null".equals(list.get(0))){
//			long num = this.loadBookNumByName(list.get(0).replace("20%", "+"));
//			return num;
//		}else if("null".equals(list.get(0))&&"null".equals(list.get(2))
//				&&"null".equals(list.get(3))&&"null".equals(list.get(4))
//				&&"null".equals(list.get(5))&&"null".equals(list.get(6))
//				&&"null".equals(list.get(7))&&"null".equals(list.get(8))
//				&&"null".equals(list.get(9))&&!"null".equals(list.get(1))){
//			long num = this.loadBookNumByAuthor(list.get(1).replace("20%", "+"));
//			return num;
//		}else if("null".equals(list.get(0))&&"null".equals(list.get(1))
//				&&"null".equals(list.get(2))&&"null".equals(list.get(4))
//				&&"null".equals(list.get(5))&&"null".equals(list.get(6))
//				&&"null".equals(list.get(7))&&"null".equals(list.get(8))
//				&&"null".equals(list.get(9))&&!"null".equals(list.get(3))){
//			long num = this.loadBookPublisherNum(list.get(3).replace("20%", "+"));
//			return num;
//		}

		/*獲得查詢sql*/
		String temp = this.getSQL(list);
		String sql = "select {book.*} from bookinfo book "+temp;
		SQLQuery query = this.getSession().createSQLQuery(sql);
		query.addEntity("book", Book.class);
		List temList = query.list();
		long num = temList.size();
		return num;
	}
	/**
	* Function:  loadBookByName
	* Description: 從數據庫中獲得按書名方式檢索的所有記錄
	* Calls:  no
	* Called By:  this.loadBook()
	* @param bookName as String,currPage as int
	* @return ArrayList<Book>
	* @throws no
	*/
	private ArrayList<Book> loadBookByName(String bookName,int currPage){
		
		ArrayList<Book> result = new ArrayList<Book>();
        ArrayList<Book> result1 = new ArrayList<Book>();
        ArrayList<Book> result2 = new ArrayList<Book>();
        ArrayList<Book> result3 = new ArrayList<Book>();
        ArrayList<Book> result4 = new ArrayList<Book>();
        
		final List<String> keywordArr = new ArrayList<String>();
		/*按" "和"+"進行分詞處理,分成單獨的一條條記錄*/
		StringTokenizer st = new StringTokenizer(bookName, " ");
		
		while (st.hasMoreElements()) {

			keywordArr.add(st.nextToken());
		}
		//System.out.println("關鍵字個數:"+keywordArr.size());
		/*如果輸入的關鍵字不是一個時的查詢方式*/
		if(keywordArr.size()>1){

            /*多個關鍵字同時存在時*/
			String tem1 = "from Book as book where";	
			 
		     for(int i = 0;i<keywordArr.size();i++){
		        	
		        tem1 += " book.bookName like :bookname"+i+ " and"; 
            }
		    final String strHql1 = tem1.substring(0, tem1.length()-3);
		    /*處理分頁*/
		    final int firstResult = (currPage-1)*10;
		    final int firstEndResult = 10;
	        result1 = (ArrayList<Book>) this .getHibernateTemplate().executeFind( new  HibernateCallback()  {
	              public  List doInHibernate(Session session){
	                 Query query = session.createQuery( strHql1);
	                 for(int j = 0;j<keywordArr.size();j++)
	                 query.setString("bookname"+j, "%"+keywordArr.get(j)+"%");
	                 query.setFirstResult(firstResult);
	                 query.setMaxResults(firstEndResult);
	                 return  query.list();
	             }
	        } );
//            System.out.println("result1:"+result1.size());
//	        for(int i = 0;i<result1.size();i++){
//	            System.out.println("result1>>"+result1.get(i).getBookName());  
//	        }
	       
	        /*多個關鍵字同時匹配不夠十條時,進行不同時匹配查詢*/
	        if(result1.size()<10){
	        	
	        	 /*完全匹配的記錄總數*/
		    	long firstNum = 0;
				String firstHql = "select count(*) from Book as book where";	
					 
				for(int i = 0;i<keywordArr.size();i++){
				        	
					 firstHql += " book.bookName like ? and"; 
                }
				firstHql =firstHql.substring(0, firstHql.length()-3);
				String []temKey = new String[keywordArr.size()];
				for(int j = 0;j<keywordArr.size();j++)temKey[j] = "%" + keywordArr.get(j) + "%";
		        List firstList = this.getHibernateTemplate().find(firstHql, temKey);
		        if(null != firstList)
		        firstNum =  (Long)firstList.get(0);
		        //System.out.println("firstNum:"+firstNum);
				String tem2 = "from Book as tushu where (";	
				 
			    for(int i = 0;i<keywordArr.size();i++){
			        	
			        tem2 += " tushu.bookName like :namebook"+i+ " or"; 
                }
			    final String strHq2 = tem2.substring(0, tem2.length()-2) + ")and not exists ("+strHql1+"and tushu.id=book.id)";
			    /*處理分頁*/
			    final int secondResult = (int) ((currPage-1)*10 - firstNum);
			    final int secondEndResult = 10-result1.size();
		        result2 = (ArrayList<Book>) this .getHibernateTemplate().executeFind( new  HibernateCallback()  {
		              public  List doInHibernate(Session session){
		                 Query query = session.createQuery( strHq2);
		                 for(int j = 0;j<keywordArr.size();j++)
		                     query.setString("namebook"+j, "%"+keywordArr.get(j)+"%");
		                 for(int k = 0;k<keywordArr.size();k++)
			                 query.setString("bookname"+k, "%"+keywordArr.get(k)+"%");
		                 query.setFirstResult(secondResult);
		                 query.setMaxResults(secondEndResult);
		                 return  query.list();
		             }
		       });
//	            System.out.println("result2:"+result2.size());
//		        for(int i = 0;i<result2.size();i++){
//		            System.out.println("result2>"+result2.get(i).getBookName());  
//		        } 				        
	       }  
	       /*如果關鍵字同時存在與不同時存在的匹配記錄數之和不夠當前顯示,則對每個關鍵字分詞后查詢*/ 
	       if(result1.size() + result2.size() < 10){
	    	   
		    	long secondNum = 0;
				String secondHql = "select count(*) from Book as book where";	
					 
				for(int i = 0;i<keywordArr.size();i++){
				        	
					secondHql += " book.bookName like ? or"; 
                }
				secondHql =secondHql.substring(0, secondHql.length()-2);
				String []temKey = new String[keywordArr.size()];
				for(int j = 0;j<keywordArr.size();j++)temKey[j] = "%" + keywordArr.get(j) + "%";
		        List firstList = this.getHibernateTemplate().find(secondHql, temKey);
		        if(null != firstList)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片欧美综合| 一区二区三区精品在线观看| 成人av在线网| 久久成人羞羞网站| 国产精品久久久久影院亚瑟 | 国产欧美综合在线观看第十页 | 欧美在线免费观看亚洲| 亚洲国产经典视频| 在线免费观看视频一区| 国产在线精品不卡| 亚洲综合视频在线观看| 精品久久国产97色综合| 色综合久久天天综合网| 肉色丝袜一区二区| 国产精品乱码人人做人人爱| 91黄视频在线| 国产精品一卡二| 三级一区在线视频先锋| 亚洲欧洲精品成人久久奇米网| 欧美一区二区三区在线| 国产在线精品国自产拍免费| 亚洲一区二区黄色| 国产精品免费看片| xf在线a精品一区二区视频网站| 色88888久久久久久影院按摩 | www.视频一区| 久久99国产精品久久99| 亚洲高清视频中文字幕| 国产精品国产三级国产普通话蜜臀 | 欧美va日韩va| 欧美亚一区二区| 高清shemale亚洲人妖| 日本亚洲最大的色成网站www| 久久先锋影音av鲁色资源网| 欧美群妇大交群中文字幕| 成人在线综合网| 奇米亚洲午夜久久精品| 亚洲gay无套男同| 亚洲激情av在线| 中文字幕一区二区三区在线不卡| 精品国产91九色蝌蚪| 色噜噜狠狠成人网p站| 成人免费视频国产在线观看| 国产美女在线精品| 久久国产婷婷国产香蕉| 日韩精品亚洲专区| 亚洲国产日韩精品| 亚洲欧美日韩中文字幕一区二区三区| 久久综合精品国产一区二区三区| 日韩一级二级三级精品视频| 欧美日韩精品一区二区三区四区 | 欧美国产国产综合| 国产午夜亚洲精品理论片色戒| 日韩精品一区在线观看| 色婷婷国产精品| 99国产精品久久久| 成人综合婷婷国产精品久久| 麻豆国产欧美日韩综合精品二区| 亚洲免费av高清| 国产精品污www在线观看| 欧美日韩高清一区二区不卡| 欧美在线999| 欧美日韩在线一区二区| 欧美午夜免费电影| 欧美日韩精品高清| 欧美性色综合网| 欧美日韩国产欧美日美国产精品| 波多野结衣在线一区| 99久久99久久精品国产片果冻| 99久久免费视频.com| 99久久777色| 色中色一区二区| 91美女片黄在线| 欧美性欧美巨大黑白大战| 欧美影片第一页| 欧美一级国产精品| 精品1区2区在线观看| 欧美在线观看视频一区二区三区| 9191成人精品久久| 欧美成人福利视频| 3d成人h动漫网站入口| 欧美日韩精品二区第二页| 777欧美精品| 国产婷婷色一区二区三区| 日韩欧美精品在线视频| 日韩一区二区三区观看| 精品国产一区a| 国产精品久久久久久久久晋中| 亚洲精品第1页| 日本最新不卡在线| 亚洲资源在线观看| 久久99久久99小草精品免视看| 国产激情视频一区二区三区欧美| 国产在线不卡一区| 国产精品资源在线看| 99精品视频一区| 777午夜精品视频在线播放| 日韩精品一区二区三区中文不卡 | 国产精品电影一区二区三区| 一区二区三区色| 日本成人在线不卡视频| 国产91对白在线观看九色| 色综合网色综合| 91精品久久久久久久91蜜桃| 日韩欧美色综合网站| 亚洲视频网在线直播| 日韩黄色小视频| av福利精品导航| 欧美一级在线免费| 国产精品乱码一区二区三区软件 | 国产成人av电影在线| 欧美日韩一区二区在线视频| 91精品国产欧美一区二区| 欧美白人最猛性xxxxx69交| 自拍偷拍亚洲激情| 麻豆成人免费电影| 一本高清dvd不卡在线观看| 久久亚洲综合色| 亚洲丰满少妇videoshd| 成人午夜视频福利| 欧美一三区三区四区免费在线看| 亚洲桃色在线一区| 久久电影国产免费久久电影| 99在线精品观看| 欧美日韩免费不卡视频一区二区三区| 久久综合狠狠综合久久综合88| 国产精品免费视频一区| 婷婷中文字幕一区三区| 色呦呦日韩精品| 国产视频在线观看一区二区三区| 麻豆91精品视频| 欧美色爱综合网| 亚洲乱码国产乱码精品精的特点 | 久久激情综合网| 欧美日本一区二区| 亚洲人成网站精品片在线观看| 国产日韩欧美电影| 波多野结衣精品在线| 久久久久国产精品人| 欧美aaaaaa午夜精品| 欧美男生操女生| 亚洲在线中文字幕| 成人av网在线| 国产欧美精品在线观看| 精品无人区卡一卡二卡三乱码免费卡| 欧美日韩久久久| 亚洲国产成人va在线观看天堂| 91亚洲国产成人精品一区二三 | av网站一区二区三区| 国产欧美va欧美不卡在线| 国产精品一区在线观看你懂的| 欧美电视剧免费观看| 性做久久久久久久免费看| 在线看国产一区二区| 亚洲综合成人网| 欧美少妇性性性| 午夜免费欧美电影| 欧美色老头old∨ideo| 亚洲v中文字幕| 91在线免费看| 欧美一区二区三级| 中文字幕日韩一区| 高清av一区二区| 久久色中文字幕| 狠狠色丁香九九婷婷综合五月| 91精品国产aⅴ一区二区| 亚洲成av人片一区二区| 91成人国产精品| 天天av天天翘天天综合网| 日韩视频一区二区三区在线播放| 激情小说亚洲一区| 国产精品的网站| 一本大道综合伊人精品热热| 亚洲图片你懂的| 色综合天天在线| 国产精品免费看片| 91黄视频在线观看| 日韩精品成人一区二区三区| 精品少妇一区二区三区在线播放 | av亚洲产国偷v产偷v自拍| 亚洲美女区一区| 色成人在线视频| 日韩国产精品久久| 国产午夜精品一区二区三区四区| 99久久精品免费看| 亚洲色图.com| 91蝌蚪porny成人天涯| 亚洲国产精品久久人人爱蜜臀| 日韩久久久精品| 欧美日韩日本视频| 成人免费看黄yyy456| 中日韩av电影| 欧美视频在线观看一区二区| 麻豆一区二区三| 亚洲人成精品久久久久| 日韩一区二区在线观看视频播放| 国产精品一区二区不卡| 亚洲精品国产一区二区三区四区在线 | 色八戒一区二区三区| 久久超级碰视频|