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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? finder.java

?? JEECMS是JavaEE版網(wǎng)站管理系統(tǒng)(Java Enterprise Edition Content Manage System)的簡稱。 基于java技術(shù)開發(fā)
?? JAVA
字號:
package com.ponyjava.common.hibernate3;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.type.Type;

/**
 * HQL語句分頁查詢
 * 
 * @author liufang
 * 
 */
public class Finder {
	protected Finder() {
	}

	public Finder(String hql) {
		hqlBuilder = new StringBuilder(hql);
	}

	public static Finder create(String hql) {
		Finder finder = new Finder(hql);
		return finder;
	}

	public Finder append(String hql) {
		hqlBuilder.append(hql);
		return this;
	}

	/**
	 * 獲得原始hql語句
	 * 
	 * @return
	 */
	public String getOrigHql() {
		return hqlBuilder.toString();
	}

	/**
	 * 獲得查詢數(shù)據(jù)庫記錄數(shù)的hql語句。
	 * 
	 * @return
	 */
	public String getRowCountHql() {
		String hql = hqlBuilder.toString();

		int fromIndex = hql.toLowerCase().indexOf(FROM);
		String projectionHql = hql.substring(0, fromIndex);

		hql = hql.substring(fromIndex);
		String rowCountHql = hql.replace(HQL_FETCH, "");

		int index = rowCountHql.indexOf(ORDER_BY);
		if (index > 0) {
			rowCountHql = rowCountHql.substring(0, index);
		}
		return wrapProjection(projectionHql) + rowCountHql;
	}

	public int getFirstResult() {
		return firstResult;
	}

	public void setFirstResult(int firstResult) {
		this.firstResult = firstResult;
	}

	public int getMaxResults() {
		return maxResults;
	}

	public void setMaxResults(int maxResults) {
		this.maxResults = maxResults;
	}

	/**
	 * 設(shè)置參數(shù)。與hibernate的Query接口一致。
	 * 
	 * @param param
	 * @param value
	 * @return
	 */
	public Finder setParam(String param, Object value) {
		return setParam(param, value, null);
	}

	/**
	 * 設(shè)置參數(shù)。與hibernate的Query接口一致。
	 * 
	 * @param param
	 * @param value
	 * @param type
	 * @return
	 */
	public Finder setParam(String param, Object value, Type type) {
		getParams().add(param);
		getValues().add(value);
		getTypes().add(type);
		return this;
	}

	/**
	 * 設(shè)置參數(shù)。與hibernate的Query接口一致。
	 * 
	 * @param paramMap
	 * @return
	 */
	public Finder setParams(Map<String, Object> paramMap) {
		for (Map.Entry<String, Object> entry : paramMap.entrySet()) {
			setParam(entry.getKey(), entry.getValue());
		}
		return this;
	}

	/**
	 * 設(shè)置參數(shù)。與hibernate的Query接口一致。
	 * 
	 * @param name
	 * @param vals
	 * @param type
	 * @return
	 */
	public Finder setParamList(String name, Collection<Object> vals, Type type) {
		getParamsList().add(name);
		getValuesList().add(vals);
		getTypesList().add(type);
		return this;
	}

	/**
	 * 設(shè)置參數(shù)。與hibernate的Query接口一致。
	 * 
	 * @param name
	 * @param vals
	 * @return
	 */
	public Finder setParamList(String name, Collection<Object> vals) {
		return setParamList(name, vals, null);
	}

	/**
	 * 設(shè)置參數(shù)。與hibernate的Query接口一致。
	 * 
	 * @param name
	 * @param vals
	 * @param type
	 * @return
	 */
	public Finder setParamList(String name, Object[] vals, Type type) {
		getParamsArray().add(name);
		getValuesArray().add(vals);
		getTypesArray().add(type);
		return this;
	}

	/**
	 * 設(shè)置參數(shù)。與hibernate的Query接口一致。
	 * 
	 * @param name
	 * @param vals
	 * @return
	 */
	public Finder setParamList(String name, Object[] vals) {
		return setParamList(name, vals, null);
	}

	/**
	 * 將finder中的參數(shù)設(shè)置到query中。
	 * 
	 * @param query
	 */
	public Query setParamsToQuery(Query query) {
		if (params != null) {
			for (int i = 0; i < params.size(); i++) {
				if (types.get(i) == null) {
					query.setParameter(params.get(i), values.get(i));
				} else {
					query.setParameter(params.get(i), values.get(i), types
							.get(i));
				}
			}
		}
		if (paramsList != null) {
			for (int i = 0; i < paramsList.size(); i++) {
				if (typesList.get(i) == null) {
					query
							.setParameterList(paramsList.get(i), valuesList
									.get(i));
				} else {
					query.setParameterList(paramsList.get(i),
							valuesList.get(i), typesList.get(i));
				}
			}
		}
		if (paramsArray != null) {
			for (int i = 0; i < paramsArray.size(); i++) {
				if (typesArray.get(i) == null) {
					query.setParameterList(paramsArray.get(i), valuesArray
							.get(i));
				} else {
					query.setParameterList(paramsArray.get(i), valuesArray
							.get(i), typesArray.get(i));
				}
			}
		}
		return query;
	}

	public Query createQuery(Session s) {
		return setParamsToQuery(s.createQuery(getOrigHql()));
	}

	private String wrapProjection(String projection) {
		if (projection.indexOf("select") == -1) {
			return ROW_COUNT;
		} else {
			return projection.replace("select", "select count(") + ") ";
		}
	}

	private List<String> getParams() {
		if (params == null) {
			params = new ArrayList<String>();
		}
		return params;
	}

	private List<Object> getValues() {
		if (values == null) {
			values = new ArrayList<Object>();
		}
		return values;
	}

	private List<Type> getTypes() {
		if (types == null) {
			types = new ArrayList<Type>();
		}
		return types;
	}

	private List<String> getParamsList() {
		if (paramsList == null) {
			paramsList = new ArrayList<String>();
		}
		return paramsList;
	}

	private List<Collection<Object>> getValuesList() {
		if (valuesList == null) {
			valuesList = new ArrayList<Collection<Object>>();
		}
		return valuesList;
	}

	private List<Type> getTypesList() {
		if (typesList == null) {
			typesList = new ArrayList<Type>();
		}
		return typesList;
	}

	private List<String> getParamsArray() {
		if (paramsArray == null) {
			paramsArray = new ArrayList<String>();
		}
		return paramsArray;
	}

	private List<Object[]> getValuesArray() {
		if (valuesArray == null) {
			valuesArray = new ArrayList<Object[]>();
		}
		return valuesArray;
	}

	private List<Type> getTypesArray() {
		if (typesArray == null) {
			typesArray = new ArrayList<Type>();
		}
		return typesArray;
	}

	private StringBuilder hqlBuilder;

	private List<String> params;
	private List<Object> values;
	private List<Type> types;

	private List<String> paramsList;
	private List<Collection<Object>> valuesList;
	private List<Type> typesList;

	private List<String> paramsArray;
	private List<Object[]> valuesArray;
	private List<Type> typesArray;

	private int firstResult = 0;

	private int maxResults = 0;

	public static final String ROW_COUNT = "select count(*) ";
	public static final String FROM = "from";
	public static final String DISTINCT = "distinct";
	public static final String HQL_FETCH = "fetch";
	public static final String ORDER_BY = "order";

	public static void main(String[] args) {
		Finder find = Finder
				.create("select distinct p FROM BookType join fetch p");
		System.out.println(find.getRowCountHql());
		System.out.println(find.getOrigHql());
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re在线视频这里只有精品| 久久国产夜色精品鲁鲁99| 激情五月婷婷综合网| 欧美日产在线观看| 日韩av高清在线观看| 日韩三级在线观看| 国产精品69毛片高清亚洲| 精品成人在线观看| 成人高清av在线| 亚洲黄色免费网站| 在线播放中文一区| 精品亚洲国内自在自线福利| 久久久蜜臀国产一区二区| 国产不卡视频在线观看| 亚洲欧洲性图库| 欧美午夜精品一区二区蜜桃 | 国产欧美日韩在线看| 成人黄色777网| 亚洲午夜激情网页| 精品久久久久久久久久久久包黑料| 国产高清久久久久| 中文字幕综合网| 欧美一级片在线观看| 国产经典欧美精品| 成人免费一区二区三区在线观看| 欧美性生活一区| 韩国av一区二区三区在线观看| 国产日韩欧美不卡在线| 色婷婷久久久综合中文字幕| 日本少妇一区二区| 中文欧美字幕免费| 在线成人免费视频| 成人黄色一级视频| 日韩激情av在线| 国产精品久久久久影院色老大| 欧美日精品一区视频| 国产超碰在线一区| 日韩av在线播放中文字幕| 国产精品色眯眯| 日韩一级在线观看| 91蜜桃免费观看视频| 久久国产精品一区二区| 亚洲精品国产一区二区精华液 | 亚洲男同1069视频| 日韩精品一区二区三区视频| 色婷婷精品久久二区二区蜜臂av| 黄色小说综合网站| 国产激情视频一区二区三区欧美| 亚洲精品国产精华液| 精品福利一二区| 欧洲另类一二三四区| 国产aⅴ精品一区二区三区色成熟| 午夜精品视频在线观看| 中文字幕亚洲一区二区va在线| 欧美一区二区日韩| 色综合天天综合给合国产| 国产自产视频一区二区三区| 午夜欧美2019年伦理| 亚洲欧美色综合| 中文字幕av一区二区三区高| 欧美成人艳星乳罩| 欧美日韩不卡在线| 日本精品一级二级| 99麻豆久久久国产精品免费优播| 国产成人丝袜美腿| 激情都市一区二区| 狠狠狠色丁香婷婷综合激情| 天天av天天翘天天综合网色鬼国产| 亚洲日本va在线观看| 国产精品欧美一区二区三区| 精品福利一二区| 26uuu亚洲| 欧美va亚洲va国产综合| 欧美一区二区三区小说| 91麻豆精品国产91久久久资源速度| 91国在线观看| 色综合久久久久网| 91麻豆国产福利精品| 色综合欧美在线| 在线免费亚洲电影| 在线看不卡av| 欧美撒尿777hd撒尿| 在线不卡a资源高清| 91精品国产福利在线观看| 91精品国产综合久久婷婷香蕉| 欧美日韩另类一区| 欧美日韩国产大片| 日韩手机在线导航| 精品99久久久久久| 欧美精品一区二区三区一线天视频 | 91精品国产色综合久久久蜜香臀| 在线不卡a资源高清| 制服丝袜国产精品| 日韩免费高清av| 国产亚洲制服色| 国产精品久久99| 亚洲精品成a人| 婷婷综合另类小说色区| 麻豆免费精品视频| 国产成人在线影院 | 精品一区二区三区久久久| 久88久久88久久久| 国产不卡在线视频| 色狠狠一区二区三区香蕉| 精品污污网站免费看| 91精品国产一区二区| 国产午夜亚洲精品午夜鲁丝片 | 国产精品九色蝌蚪自拍| 亚洲最大色网站| 久久精品国内一区二区三区| 欧美一区在线视频| 久久综合久久99| 亚洲三级在线看| 日韩中文字幕麻豆| 国产高清成人在线| 在线观看欧美精品| 久久综合色综合88| 亚洲欧美日韩国产成人精品影院| 人人超碰91尤物精品国产| 国产精品12区| 欧美另类videos死尸| 久久精品夜色噜噜亚洲aⅴ| 日韩理论片一区二区| 青娱乐精品在线视频| 成人ar影院免费观看视频| 欧美人狂配大交3d怪物一区 | 欧美伦理视频网站| 国产女人aaa级久久久级 | 国产精品久久久久久户外露出| 亚洲国产成人av| 成人免费高清视频在线观看| 在线播放中文一区| 中文字幕日韩精品一区| 另类中文字幕网| 精品视频色一区| 国产精品的网站| 激情欧美日韩一区二区| 欧美久久久久久蜜桃| 椎名由奈av一区二区三区| 国产精品69毛片高清亚洲| 欧美一区二区成人6969| 亚洲精品国产一区二区三区四区在线| 精品亚洲免费视频| 欧美一区二区女人| 午夜精品久久久久久久久| 色综合天天狠狠| 国产欧美日韩久久| 久久机这里只有精品| 欧美人伦禁忌dvd放荡欲情| 亚洲男人天堂av网| 丁香网亚洲国际| 国产日韩欧美激情| 国产精品中文字幕一区二区三区| 91精品国产一区二区三区蜜臀| 一区二区三区在线视频免费| 成人动漫一区二区| 欧美高清在线一区二区| 国产麻豆成人精品| 久久综合九色综合欧美亚洲| 日本午夜精品视频在线观看 | 首页亚洲欧美制服丝腿| 色又黄又爽网站www久久| 中文av字幕一区| 成人免费高清视频| 国产精品久久久久四虎| 成人深夜在线观看| 国产欧美一区二区三区在线看蜜臀| 激情综合色播激情啊| 精品国产髙清在线看国产毛片| 免费视频一区二区| 在线播放中文字幕一区| 免费欧美在线视频| 日韩一区二区三区电影| 蜜芽一区二区三区| 日韩精品一区二区三区三区免费| 七七婷婷婷婷精品国产| 26uuu色噜噜精品一区| 欧美日韩国产综合视频在线观看| 亚洲精品乱码久久久久久日本蜜臀| 一本色道**综合亚洲精品蜜桃冫| 亚洲精品久久久蜜桃| 欧美高清视频一二三区| 奇米777欧美一区二区| 久久久亚洲精品一区二区三区| 国产91在线观看丝袜| 亚洲欧洲精品一区二区精品久久久| 成人av在线资源网站| 亚洲免费av网站| 欧美日韩大陆在线| 美女视频黄 久久| 国产亚洲综合在线| 91天堂素人约啪| 亚洲福利视频一区二区| 欧美成人r级一区二区三区| 国产一区二区三区香蕉| 亚洲人成精品久久久久久| 欧美日韩高清一区| 精品一区二区三区在线播放视频| 欧美国产日产图区| 欧美日韩一区在线|