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;
        }
    }
  • 相关阅读:
    实时控制软件设计第一周作业-汽车ABS软件系统案例分析
    团队项目·冰球模拟器——任务间通信、数据共享等设计
    团队项目·冰球模拟器——cmake 自动化构建系统的配置文件的编写
    团队项目·冰球模拟器——文件结构设计
    团队项目·冰球模拟器——插值算法接口设计
    第四周作业
    第三周作业、实时操作系统µC/OS介绍及其它内容
    第二周作业、停车场门禁控制系统状态机
    Open Dynamics Engine for Linux 安装笔记
    第一周作业、典型实时控制系统案例分析
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7965581.html
Copyright © 2011-2022 走看看