📄 persistencemanager.java
字号:
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(" <B>" + paging.getPageSize() + "</B> 条/页 共 ");
sb.append("<B>" + paging.getRowTotal() + "</B> 条 ");
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(" ");
}
if (paging.getPageNum() != paging.getPageTotal()) {
sb.append("<a href='javascript:next()'><FONT COLOR=\"#000000\">下 页</font></a>");
}
sb.append(" 转至 <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(" <B>" + paging.getPageSize() + "</B> 条/页 共 ");
sb.append("<B>" + paging.getRowTotal() + "</B> 条 ");
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(" ");
}
if (paging.getPageNum() != paging.getPageTotal()) {
sb.append("<a href='javascript:next()'><FONT COLOR=\"#000000\">下 页</font></a>");
}
sb.append(" 转至 <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 + -