zoukankan      html  css  js  c++  java
  • hibernate hql where语句拼接工具类

    package com.zhaoshijie.tree.other;

    /**
    * hibernate HQL WHERE语句工具类
    *
    * @author 赵士杰
    *
    */
    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", "zsj", "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();
    }

    }

    ------来自http://zhaoshijie.iteye.com/blog/1060576

  • 相关阅读:
    jwt 0.9.0(三)jwt客户端存储状态可行性分析,及Java代码案例
    jwt 0.9.0(二)jwt官网资料总结
    jwt 0.9.0(一)推荐jwt理由
    jwt 0.9.0 系列目录
    Elasticsearch-6.7.0系列(八)开启kibana监控
    Elasticsearch-6.7.0系列(七)SpringCloud连接ES集群,使用ES用户名密码
    Elasticsearch-6.7.0系列(六)ES设置集群密码
    Oracle 11g Java驱动包ojdbc6.jar安装到maven库,并查看jar具体版本号
    nginx1.14.0版本location路径,多级文件目录配置,root与alias的配置区别
    docker18.09.5 Dockerfile文件编写
  • 原文地址:https://www.cnblogs.com/lanliying/p/3459733.html
Copyright © 2011-2022 走看看