⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 persistencemanager.java

📁 一个专门用来快速开发网站的框架
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        try {
            Session session = HibernateUtil.getSession();
            Query query = session.createQuery(hql);
            if (names != null) {
                for (int i = 0; i < names.length; i++) {
                    if (values[i] != null)
                        query.setParameter(names[i], values[i]);
                }
            }
            if ( -1 != first) {
                query.setFirstResult(first * max);
                query.setMaxResults(max);
            }
            list = query.list();
            HibernateUtil.closeSession();
        } catch (Exception ex) {
            log.error("queryObjs方法出错:" + ex.toString());
            HibernateUtil.closeSession();
            throw new PersistenceException(ex);
        }
        return list;
    }

    /**
     * 分页查询。
     */
    public List queryPageObjs(String hql, Paging paging) throws PersistenceException {
        List allObjects = queryObjs(hql);
        // 只有当用户同时指定了每页的大小和显示第几页才进行翻页,否则不翻页。
        if (paging.getPageNum() == 0) {
            paging.setPageNum(1);
        }
        if (paging.getPageSize() > 0 && paging.getPageNum() > 0) {
            List pageObjects = new ArrayList();
            // 设置总纪录数
            paging.setRowTotal(allObjects.size());
            // 计算得到总页数
            paging.setPageTotal( (allObjects.size() - 1) / paging.getPageSize() + 1);
            if (paging.getPageNum() > paging.getPageTotal()) {
                paging.setPageNum(1);
            }
            String pageList = "";
            for (int i = 1; i <= paging.getPageTotal(); i++) {
                if (i == paging.getPageNum()) {
                    pageList += "<option value=\"" + (i) + "\" selected >" + (i) + "</option>";
                } else {
                    pageList += "<option value=\"" + (i) + "\">" + (i) + "</option>";
                }
            }
            paging.setPagelist(pageList);

            StringBuffer sb = new StringBuffer();
            sb.append("<input type=hidden name=\"paging.pageNum\" value=\"" + paging.getPageNum() + "\">页次: <B>" + paging.getPageNum() + "/" + paging.getPageTotal() + "</B>");
            sb.append("&nbsp;&nbsp;<B>" + paging.getPageSize() + "</B> 条/页&nbsp;&nbsp;共 ");
            sb.append("<B>" + paging.getRowTotal() + "</B> 条&nbsp;&nbsp;");

            if (paging.getPageNum() != 1) {
                sb.append("<a href='javascript:last()'><FONT COLOR=\"#000000\">上 页</font></a>");
            }
            if (paging.getPageNum() != 1 && paging.getPageNum() != paging.getPageTotal()) {
                sb.append("&nbsp;");
            }
            if (paging.getPageNum() != paging.getPageTotal()) {
                sb.append("<a href='javascript:next()'><FONT COLOR=\"#000000\">下 页</font></a>");
            }

            sb.append("&nbsp;&nbsp;转至 <select name = \"pc\" onchange=\"PageOption(this)\">");

            for (int i = 1; i <= paging.getPageTotal(); i++) {
                if (i == paging.getPageNum()) {
                    sb.append("<option selected value=" + i + ">" + i + "</option>");
                } else {
                    sb.append("<option value=" + i + ">" + i + "</option>");
                }
            }
            sb.append("</select> 页");

            sb.append("<SCRIPT LANGUAGE=\"JavaScript\">");
            sb.append("function PageOption(aa){");
            sb.append("document.all(\"paging.pageNum\").value = aa.value;");
            sb.append("form1.action=\"" + paging.getPageAction() + "\";");
            sb.append("form1.submit();");
            sb.append("}");
            sb.append("function last(){");
            sb.append("document.all(\"paging.pageNum\").value = " + (paging.getPageNum() - 1) + ";");
            sb.append("form1.action=\"" + paging.getPageAction() + "\";");
            sb.append("form1.submit();");
            sb.append("}");
            sb.append("function next(){");
            sb.append("document.all(\"paging.pageNum\").value = " + (paging.getPageNum() + 1) + ";");
            sb.append("form1.action=\"" + paging.getPageAction() + "\";");
            sb.append("form1.submit();");
            sb.append("}");
            sb.append("</SCRIPT>");

            System.out.print("*************************        "+paging.getPageAction()+     "****************************");
            paging.setPageBottom(sb.toString());

            // 调整要翻到第几页:如果pageNum大于pageSize,就把pageNum设成pageSize。
            if (paging.getPageNum() > paging.getPageTotal()) {
                paging.setPageNum(paging.getPageTotal());
            }
            // 计算要去哪一段的数据
            int intStart = paging.getPageSize() * (paging.getPageNum() - 1);
            int intEnd = intStart + paging.getPageSize();
            if (intEnd > paging.getRowTotal()) {
                intEnd = paging.getRowTotal();
            }
            //log.info("从" + intStart + "添加到" + intEnd);
            for (int i = intStart; i < intEnd; i++) {
                pageObjects.add(allObjects.get(i));
            }
            return pageObjects;
        } else {
            return allObjects;
        }
    }

    /**
     * 分页查询。
     */
    public List queryPageObjs(List allObjects, Paging paging) throws PersistenceException {
        // 只有当用户同时指定了每页的大小和显示第几页才进行翻页,否则不翻页。
        if (paging.getPageNum() == 0) {
            paging.setPageNum(1);
        }
        if (paging.getPageSize() > 0 && paging.getPageNum() > 0) {
            List pageObjects = new ArrayList();
            // 设置总纪录数
            paging.setRowTotal(allObjects.size());
            // 计算得到总页数
            paging.setPageTotal( (allObjects.size() - 1) / paging.getPageSize() + 1);
            if (paging.getPageNum() > paging.getPageTotal()) {
                paging.setPageNum(1);
            }
            String pageList = "";
            for (int i = 1; i <= paging.getPageTotal(); i++) {
                if (i == paging.getPageNum()) {
                    pageList += "<option value=\"" + (i) + "\" selected >" + (i) + "</option>";
                } else {
                    pageList += "<option value=\"" + (i) + "\">" + (i) + "</option>";
                }
            }
            paging.setPagelist(pageList);

            StringBuffer sb = new StringBuffer();
            sb.append("<input type=hidden name=\"paging.pageNum\" value=\"" + paging.getPageNum() + "\">页次: <B>" + paging.getPageNum() + "/" + paging.getPageTotal() + "</B>");
            sb.append("&nbsp;&nbsp;<B>" + paging.getPageSize() + "</B> 条/页&nbsp;&nbsp;共 ");
            sb.append("<B>" + paging.getRowTotal() + "</B> 条&nbsp;&nbsp;");

            if (paging.getPageNum() != 1) {
                sb.append("<a href='javascript:last()'><FONT COLOR=\"#000000\">上 页</font></a>");
            }
            if (paging.getPageNum() != 1 && paging.getPageNum() != paging.getPageTotal()) {
                sb.append("&nbsp;");
            }
            if (paging.getPageNum() != paging.getPageTotal()) {
                sb.append("<a href='javascript:next()'><FONT COLOR=\"#000000\">下 页</font></a>");
            }

            sb.append("&nbsp;&nbsp;转至 <select name = \"pc\" onchange=\"PageOption(this)\">");

            for (int i = 1; i <= paging.getPageTotal(); i++) {
                if (i == paging.getPageNum()) {
                    sb.append("<option selected value=" + i + ">" + i + "</option>");
                } else {
                    sb.append("<option value=" + i + ">" + i + "</option>");
                }
            }
            sb.append("</select> 页");

            sb.append("<SCRIPT LANGUAGE=\"JavaScript\">");
            sb.append("function PageOption(aa){");
            sb.append("document.all(\"paging.pageNum\").value = aa.value;");
            sb.append("form1.action=\"" + paging.getPageAction() + "\";");
            sb.append("form1.submit();");
            sb.append("}");
            sb.append("function last(){");
            sb.append("document.all(\"paging.pageNum\").value = " + (paging.getPageNum() - 1) + ";");
            sb.append("form1.action=\"" + paging.getPageAction() + "\";");
            sb.append("form1.submit();");
            sb.append("}");
            sb.append("function next(){");
            sb.append("document.all(\"paging.pageNum\").value = " + (paging.getPageNum() + 1) + ";");
            sb.append("form1.action=\"" + paging.getPageAction() + "\";");
            sb.append("form1.submit();");
            sb.append("}");
            sb.append("</SCRIPT>");

            paging.setPageBottom(sb.toString());

            // 调整要翻到第几页:如果pageNum大于pageSize,就把pageNum设成pageSize。
            if (paging.getPageNum() > paging.getPageTotal()) {
                paging.setPageNum(paging.getPageTotal());
            }
            // 计算要去哪一段的数据
            int intStart = paging.getPageSize() * (paging.getPageNum() - 1);
            int intEnd = intStart + paging.getPageSize();
            if (intEnd > paging.getRowTotal()) {
                intEnd = paging.getRowTotal();
            }
            //log.info("从" + intStart + "添加到" + intEnd);
            for (int i = intStart; i < intEnd; i++) {
                pageObjects.add(allObjects.get(i));
            }
            return pageObjects;
        } else {
            return allObjects;
        }
    }

//************************    工具方法   *******************************************
     /**
      * 得到查询结果的记录数。
      * 语句类似于:select count (*) from t_name where ...
      */
     public Integer getCount(String s) throws PersistenceException {
         List list = queryObjs(s);
         return (Integer) list.iterator().next();
     }

    /**
     * 得到指定Sequence的当前顺序。
     * 通过得到java.sql.Connection来实现。
     */
    public String getSequence(String sName) throws PersistenceException {
        if (sName == null)
            throw new PersistenceException("sequence的名字不能为空!");
        String ret = null;
        String sql = "select " + sName + ".nextval from dual";
        Session session = HibernateUtil.getSession();
        try {
            PreparedStatement preparedstatement = session.connection().prepareStatement(sql);
            ResultSet resultset = preparedstatement.executeQuery();
            if (resultset.next())
                ret = resultset.getString(1);
            resultset.close();
            preparedstatement.close();
        } catch (Exception ex) {
            HibernateUtil.closeSession();
            HibernateUtil.rollbackTransaction();
            throw new PersistenceException(ex);
        }
        return ret;
    }

    /**
     * 直接运行SQL语句返回集合。
     * 通过HibernateUtil.getSession().connection()得到java.sql.Connection来实现。
     */
    public List executeSQLQuery(String sql) throws PersistenceException {
        log.info("======sql======" + sql);
        ArrayList ret = new ArrayList();
        try {
            // 运行SQL语句,返回ResultSet。
            Connection conn = HibernateUtil.getSession().connection();
            conn.setAutoCommit(false);
            PreparedStatement prep = conn.prepareStatement(sql);
            ResultSet rest = prep.executeQuery();

            //转到动态对象中
            ResultSetDynaClass resultSetDynaclass = new ResultSetDynaClass(rest);
            BasicDynaClass basicdynaclass = new BasicDynaClass("test", BasicDynaBean.class, resultSetDynaclass.getDynaProperties());
            Iterator rows = resultSetDynaclass.iterator();
            while (rows.hasNext()) {
                DynaBean oldRow = (DynaBean) rows.next();
                DynaBean newRow = basicdynaclass.newInstance();
                PropertyUtils.copyProperties(newRow, oldRow);
                ret.add(newRow);
            }
            conn.commit();
        } catch (Exception ex) {
            log.error("直接运行SQL语句时出错,SQL语句是:" + sql, ex);
            throw new PersistenceException("执行通用查询时出现异常!", ex);
        }
        return ret;
    }

    /**
     * 通过SQL得到查询结果的记录数。
     * 参数:据标准的SQL语句类似于:select suerid,username from sysuser where ...
     */
    public int getCountBySql(String sql) throws PersistenceException {
        String strCount = "select count(*) from (" + sql + ")";
        log.info("======sql======" + strCount);
        int ret = 0;
        try {
            // 运行SQL语句,返回ResultSet。
            Connection conn = HibernateUtil.getSession().connection();
            PreparedStatement prep = conn.prepareStatement(strCount);
            ResultSet rest = prep.executeQuery();
            if (rest.next()) {
                ret = rest.getInt(1);
            }
        } catch (Exception ex) {
            log.error("直接运行SQL语句时出错,SQL语句是:" + sql, ex);
            throw new PersistenceException("执行通用查询时出现异常!", ex);
        }
        return ret;
    }

    public static void main(String[] args) {
        PersistenceManager pm = new PersistenceManager();
        List list = pm.executeSQLQuery(" select * from t_sys_km ");
        for (int i = 0; i < list.size(); i++) {
            BasicDynaBean obj = (BasicDynaBean) list.get(i);
            String xm = (String) obj.get("xm");
            log.info(xm);
        }
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -