HqlHelper查询助手

    xiaoxiao2026-06-17  9

    package com.jh.hiv.utils; import java.util.ArrayList; import java.util.List; /**  * 用于辅助生成HQL语句与参数列表  *  * @author tyg  *  */ public class HqlHelper {     private String selectClause = ""; // select子句     private String fromClause; // From子句     private String whereClause = ""; // Where子句     private String orderByClause = ""; // OrderBy子句     private List<Object> parameters = new ArrayList<Object>(); // 参数列表     /**      * 生成From子句      *      * @param clazz      * @param alias      */     public HqlHelper(Class clazz, String alias) {         fromClause = "FROM " + clazz.getSimpleName() + " " + alias;     }     /**      * 拼接select子句,选择特定的列      * @param  property (传入选择的列  多列用逗号“,” 隔开 )      * @return      */     public HqlHelper AddSelect(String property){         if(selectClause.length() == 0 ){             selectClause = "select "+property+" ";         }else{             selectClause += property +" ";         }         return this;

        }

    /** * 构造where子句 * @param condition 查询条件语句;例如:i.title like ? * @param params 查询条件语句中?对应的查询条件值;例如: %标题% */     public HqlHelper addWhereCondition(String condition, Object... params) {         if (whereClause.length() == 0) {             whereClause = " WHERE " + condition;         } else {             whereClause += " AND " + condition;         }         if (params != null && params.length > 0) {             for (Object param : params) {                 this.parameters.add(param);             }         }         return this;     }     /**      * 如果第一个参数为true,则拼接Where子句(添加的多个过滤条件之间是使用AND连接的)      *      * @param append   为true 添加条件      * @param condition      *            一个过滤条件      * @param params      */     public HqlHelper addWhereCondition(boolean append, String condition, Object... params) {         if (append) {             addWhereCondition(condition, params);         }         return this;     }     /**      * 拼接OrderBy子句      *      * @param propertyName      * @param isAsc      */     public HqlHelper addOrderByProperty(String propertyName, boolean isAsc) {         if (orderByClause.length() == 0) {             orderByClause = " ORDER BY " + propertyName + (isAsc ? " ASC" : " DESC");         } else {             orderByClause += ", " + propertyName + (isAsc ? " ASC" : " DESC");         }         return this;     }     /**      * 如果第一个参数为true,则拼接OrderBy子句      *      * @param propertyName      * @param isAsc      */     public HqlHelper addOrderByProperty(boolean append, String propertyName, boolean isAsc) {         if (append) {             addOrderByProperty(propertyName, isAsc);         }         return this;     }     /**      * 获取查询数据列表的的HQL语句      *      * @return      */     public String getQueryListHql() {         return selectClause + fromClause + whereClause + orderByClause;     }     /**      * 获取查询总记录数的的HQL语句      *      * @return      */     public String getQueryCountHql() {         return "SELECT COUNT(*) " + fromClause + whereClause;     }     /**      * 获取参数列表      *      * @return      */     public List<Object> getParameters() {         return parameters;     } }
    转载请注明原文地址: https://ju.6miu.com/read-1310605.html
    最新回复(0)