/**
*
* @author 杨怿,用于单表或多表数据库查询后生成方便使用的结果集
*/
package com.huahuan.database;
import com.jplus.json.EasyUiJson;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import org.jplus.hyb.database.SqlFilter;
import org.jplus.util.LoggerManage;
import org.jplus.util.Pagger;
/**
*
* @author Administrator
*/
/**
* 数据库操作对象
*/
public class EasyMapsManager extends SqlFilter {
private DatabaseAccess dao;
/**
* 结果集列表
*/
private ArrayList<HashMap> dataList;
public EasyMapsManager(DatabaseAccess dao) {
this.dao = dao;//数据库操作对象
}
/**
* 加入新的预处理参数
*
* @param parameter 参数
* @return 自身对象
*/
public void setPreparedParameter(Object parameter) {
dao.setPreparedParameter(parameter);
}
/**
* 从数据库查询结果集合中取得数据
*
* @param rs 数据库查询结果集合
* @return List<EasyData>
*/
private ArrayList<HashMap> loadData(ResultSet rs) {
dataList = new ArrayList<HashMap>();
try {
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
while (rs != null && rs.next()) {
// Object[] rowData = new Object[columnCount];
HashMap rowData = new HashMap();
for (int i = 1; i <= columnCount; i++) {
rowData.put(metaData.getColumnLabel(i), rs.getObject(i));//获得列标签和名称是有区别的
}
dataList.add(rowData);
}
} catch (SQLException ex) {
LoggerManage.logger.getLogger(this.getClass().getName() + ex,ex);
}
return dataList;
}
/**
* 获得查询集合,如果没有查询到结果,返回一个size=0的list
*
* @param sql
* @return List<EasyData>
*/
public ArrayList<HashMap> executeQuery(String sql) {
if (super.isFilter()) {
super.getSql(sql);
sql = super.getSelectSQL();
}
loadData(dao.executeQuery(sql));
return dataList;
}
public ArrayList<HashMap> executeQuery(String sql, Pagger page) {
if (super.isFilter()) {
super.getSql(sql);
sql = super.getSelectSQL();
page.setItems(dao.executeCount(super.getCountSQL()));
} else {
page.setItems(dao.executeCount("select count(*) as count from (" + sql + ") hybcount"));
}
return executeQuery(sql + " limit " + page.getTop() + "," + page.getSize());
}
public ArrayList<HashMap> executeQuery(String sql, EasyUiJson page) {
if (super.isFilter()) {
super.getSql(sql);
sql = super.getSelectSQL();
page.setTotal(dao.executeCount(super.getCountSQL()));
} else {
page.setTotal(dao.executeCount("select count(*) as count from (" + sql + ") hybcount"));
}
return executeQuery(sql + " limit " + page.getTop() + "," + page.getRows());
}
}