hibernate HQL WHERE語句工具類

 

package com.test;

/**
 * hibernate HQL WHERE語句工具類
 * 
 * @author YangHuiChi
 * 
 */
public class HqlWhere {

	/**
	 * 測試入口函數
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// 查詢條件
		StringBuilder strHql = new StringBuilder("from Book b where");
        strHql.append(HqlWhere.bindLike_suffix("name", "sj", ""));
        strHql.append(HqlWhere.bindEquals("b.reader.meno", "shiRen", "and"));
        strHql.append(HqlWhere.bindEquals("b.reader.name", "chenglong", "and"));
        strHql.append(HqlWhere.bindLikeAll_split("b.title", "1", "and"));
		System.out.println(strHql.toString());
	}

	/**
	 * ^^^^^^
	 * 功能:用於模糊查詢 格式爲:如:1,2,3,4,5,6字符串的字段(匹配: "1," 和 ",1," 和 ",1" )。
	 * @param conditionKey    條件字段名稱
	 * @param conditionValue  條件值
	 * @param isAnd 前綴是否帶 and
	 * @return
	 */
	public static String bindLikeAll_split(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		// 以某條件值爲:"1,"開頭的
		conditionHql.append("(").append(conditionKey).append(" like ").append(
				"'").append(conditionValue).append(",%'");
		// 以某條件值爲:包含",1,"
		conditionHql.append(" or ").append(conditionKey).append(" like ")
				.append("'%,").append(conditionValue).append(",%'");
		// 以",1"結尾的
		conditionHql.append(" or ").append(conditionKey).append(" like ")
				.append("'").append("%,").append(conditionValue).append("') ");
		return conditionHql.toString();
	}

	/**
	 * ^^^^^^
	 * 功能:用於模糊查詢(包括:前綴,中間,後綴)
	 * @param conditionKey
	 *            條件字段名稱
	 * @param conditionValue
	 *            條件值
	 * @param isAnd
	 *            前綴需不需要帶 and
	 * @return
	 */
	public static String bindLike_All(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		// 以某條件值爲:"1,"開頭的
		conditionHql.append("(").append(conditionKey).append(" like ").append(
				"'").append(conditionValue).append("%'");
		// 以某條件值爲:包含",1,"
		conditionHql.append(" or ").append(conditionKey).append(" like ")
				.append("'%").append(conditionValue).append("%'");
		// 以",1"結尾的
		conditionHql.append(" or ").append(conditionKey).append(" like ")
				.append("'").append("%").append(conditionValue).append("') ");
		return conditionHql.toString();
	}

	/**
	 * ^^^^^^
	 * 功能:用於某字段"等於"某個值的查詢條件
	 * 
	 * @param conditionKey
	 * @param conditionValue
	 * @param isAnd
	 * @return
	 */
	public static String bindEquals(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		conditionHql.append(conditionKey).append("=").append("'").append(
				conditionValue).append("' ");
		return conditionHql.toString();
	}

	/**
	 * ^^^^^^
	 * 功能:用於某字段"不等於"某個值的查詢條件
	 * @param conditionKey
	 * @param conditionValue
	 * @param isAnd
	 * @return
	 */
	public static String bindNotEquals(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		conditionHql.append(conditionKey).append(" <> ").append("'").append(
				conditionValue).append("' ");
		return conditionHql.toString();
	}

	/**
	 * ^^^^^^
	 * 功能:用於模糊查詢 前綴爲某個值的條件
	 * @param conditionKey
	 * @param conditionValue
	 * @param isAnd
	 */
	public static String bindLike_prefix(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		conditionHql.append(conditionKey).append(" like ").append("'").append(
				conditionValue).append("%' ");
		return conditionHql.toString();
	}

	/**
	 * ^^^^^^
	 * 功能:用於模糊查詢 後綴爲某個值的條件
	 * @param conditionKey
	 * @param conditionValue
	 * @param isAnd
	 */
	public static String bindLike_suffix(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		conditionHql.append(conditionKey).append(" like ").append("'").append(
				"%").append(conditionValue).append("' ");
		return conditionHql.toString();
	}

	/**
	 * ^^^^^^
	 * 功能:用於模糊查詢 包含某個值的條件
	 * @param conditionKey
	 * @param conditionValue
	 * @param isAnd
	 */
	public static String bindLike_include(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		conditionHql.append(conditionKey).append(" like ").append("'").append(
				"%").append(conditionValue).append("%' ");
		return conditionHql.toString();
	}

	/**
	 * ^^^^^^
	 * 功能:用於某字段"小於"某個值的查詢條件
	 * @param conditionKey
	 * @param conditionValue
	 * @param isAnd
	 */
	public static String bind_LessThan(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		conditionHql.append(conditionKey).append(" < ").append("'").append(
				conditionValue).append("' ");
		return conditionHql.toString();
	}

	/**
	 * ^^^^^^
	 * 功能:用於某字段"大於"某個值的查詢條件
	 * @param conditionKey
	 * @param conditionValue
	 * @param isAnd
	 */
	public static String bind_Than(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		conditionHql.append(conditionKey).append(" > ").append("'").append(
				conditionValue).append("' ");
		return conditionHql.toString();
	}

	/**
	 * ^^^^^^
	 * 功能:用於某字段"小於並且等於"某個值的查詢條件
	 * @param conditionKey
	 * @param conditionValue
	 * @param isAnd
	 */
	public static String bind_LessThan_Equal(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		conditionHql.append(conditionKey).append(" <= ").append("'").append(
				conditionValue).append("' ");
		return conditionHql.toString();
	}

	/**
	 * ^^^^^^
	 * 功能:用於某字段"大於並且等於"某個值的查詢條件
	 * @param conditionKey
	 * @param conditionValue
	 * @param isAnd
	 */
	public static String bind_Than_Equal(String conditionKey,
			String conditionValue, String or_And) {
		// 查詢條件
		StringBuilder conditionHql = new StringBuilder(" ");
		if (!or_And.equals("")) {
			conditionHql.append(or_And).append(" ");
		}
		conditionHql.append(conditionKey).append(" >= ").append("'").append(
				conditionValue).append("' ");
		return conditionHql.toString();
	}

}

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章