zoukankan      html  css  js  c++  java
  • 分页技巧__设计分页用的QueryHelper辅助对象

    分页技巧__设计分页用的QueryHelper辅助对象

    FROM       必须

      实体名

    WHERE       可选

      条件1 AND 条件2 AND ... 条件n

    ORDER BY     可选

      属性1, 属性2, ... 属性n

    QueryHelper.java

    /**
     * 用于辅助拼接HQL语句
     */
    public class QueryHelper {
        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 QueryHelper(Class clazz, String alias) {
            fromClause = "FROM " + clazz.getSimpleName() + " " + alias;
        }
        /**
         * 拼接Where子句
         * @param condition
         * @param params
         */
        public void addCondition(String condition, Object... params) {
            // 拼接
            if (whereClause.length() == 0) {
                whereClause = " WHERE " + condition;
            } else {
                whereClause += " AND " + condition;
            }
            // 参数
            if (params != null) {
                for (Object p : params) {
                    parameters.add(p);
                }
            }
        }
        /**
         * 如果第一个参数为true,则拼接Where子句
         * @param append
         * @param condition
         * @param params
         */
        public void addCondition(boolean append, String condition,
                Object... params) {
            if (append) {
                addCondition(condition, params);
            }
        }
        /**
         * 拼接OrderBy子句
         * @param propertyName
         *            参与排序的属性名
         * @param asc
         *            true表示升序,false表示降序
         */
        public void addOrderProperty(String propertyName, boolean asc) {
            if (orderByClause.length() == 0) {
                orderByClause = " ORDER BY " + propertyName
                        + (asc ? " ASC" : " DESC");
            } else {
                orderByClause += ", " + propertyName + (asc ? " ASC" : " DESC");
            }
        }
        /**
         * 如果第一个参数为true,则拼接OrderBy子句
         * @param append
         * @param propertyName
         * @param asc
         */
        public void addOrderProperty(boolean append, String propertyName,
                boolean asc) {
            if (append) {
                addOrderProperty(propertyName, asc);
            }
        }
        /**
         * 获取生成的用于查询数据列表的HQL语句
         * @return
         */
        public String getListQueryHql() {
            return fromClause + whereClause + orderByClause;
        }
        /**
         * 获取生成的用于查询总记录数的HQL语句
         * @return
         */
        public String getCountQueryHql() {
            return "SELECT COUNT(*) " + fromClause + whereClause;
        }
        /**
         * 获取HQL中的参数值列表
         * @return
         */
        public List<Object> getParameters() {
            return parameters;
        }
    }
  • 相关阅读:
    [可能没有默认的字体]Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename...
    <yii 框架学习> yii 框架改为中文提示
    Yii 语言设置 中文提示信息
    yii新手在实例化models(controller调用models实化化)php warning错误
    yii CFormModel中的rules验证机制
    神舟优雅系列和神舟精盾系列哪个好?
    response.sendRedirect跳转 jsp:forward跳转
    jsp post/get中接处理
    jsp动作之 forward
    JDK eclipse selenium的安装以及环境变量的配置
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7965581.html
Copyright © 2011-2022 走看看