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();
}
}