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

  • 相关阅读:
    用python写一个魔塔50层怪物伤害计算器
    一个奇怪的方法解决华为ENSP模拟器路由器启动后命令行一直“#”的问题
    安卓数据库sqllite查看工具Android Debug Database使用教程
    GNS3错误’Could not start Telnet console with command 'Solar-PuTTY.exe‘
    解决从其他地方拷贝过来的Android项目在本机不能运行(报错)的问题
    python不换行输出
    哈希查找对比普通遍历查找所需时间
    第二个爬虫之爬取知乎用户回答和文章并将所有内容保存到txt文件中
    我的第一个爬虫之爬取搜狗壁纸并按分类存入本地文件夹
    What is Double 11 in China? Is it a famous festival?
  • 原文地址:https://www.cnblogs.com/lanliying/p/3459733.html
Copyright © 2011-2022 走看看