hibernate HQL WHERE语句工具类

本文介绍了一个用于构建复杂HQL查询条件的工具类,包括模糊查询、等于查询、不等于查询等常见操作,通过实例展示了如何灵活运用这些方法进行数据库查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

}

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值