qobjectdb.java
来自「cwbbs 云网论坛源码」· Java 代码 · 共 1,053 行 · 第 1/3 页
JAVA
1,053 行
public Vector list(JdbcTemplate jt, String sql) { int total = 0; ResultSet rs = null; Vector result = new Vector(); Connection conn = jt.getConnection(); try { String countsql = SQLFilter.getCountSql(sql); rs = conn.executeQuery(countsql); if (rs != null && rs.next()) { total = rs.getInt(1); } if (rs != null) { rs.close(); rs = null; } conn.prepareStatement(sql); if (total != 0) { conn.setMaxRows(total); } rs = conn.executePreQuery(); if (rs == null) { return result; } else { rs.setFetchSize(total); if (rs.absolute(1) == false) { return result; } do { if (primaryKey.getType() == PrimaryKey.TYPE_INT) result.addElement(getQObjectDb(new Integer(rs.getInt(1)))); else if (primaryKey.getType() == PrimaryKey.TYPE_STRING) result.addElement(getQObjectDb(rs.getString(1))); else if (primaryKey.getType() == PrimaryKey.TYPE_LONG) result.addElement(getQObjectDb(new Long(rs.getLong(1)))); else if (primaryKey.getType() == PrimaryKey.TYPE_COMPOUND) { HashMap keys = ((PrimaryKey)primaryKey.clone()).getKeys(); Iterator ir = keys.keySet().iterator(); while (ir.hasNext()) { String keyName = (String) ir.next(); KeyUnit ku = (KeyUnit) keys.get(keyName); if (ku.getType() == primaryKey.TYPE_INT) { ku.setValue(new Integer(rs.getInt(ku.getOrders() + 1))); } else if (ku.getType() == primaryKey.TYPE_LONG) { ku.setValue(new Long(rs.getLong(ku.getOrders() + 1))); } else { ku.setValue(rs.getString(ku.getOrders() + 1)); } } result.addElement(getQObjectDb(keys)); } } while (rs.next()); } } catch (SQLException e) { LogUtil.getLog(this.getClass()).error("list: " + e.getMessage()); } finally { if (rs != null) { try { rs.close(); } catch (Exception e) {} rs = null; } if (conn != null) { conn.close(); conn = null; } } return result; } public Vector list(JdbcTemplate jt, String sql, Object[] params) { int total = 0; Vector result = new Vector(); String connName = jt.getConnection().connName; try { String countsql = SQLFilter.getCountSql(sql); ResultIterator ri = jt.executeQuery(countsql, params); if (ri.hasNext()) { ResultRecord rr = (ResultRecord) ri.next(); total = rr.getInt(1); } jt = new JdbcTemplate(new Connection(connName)); if (total != 0) { jt.getConnection().setMaxRows(total); } ri = jt.executeQuery(sql, params); while (ri.hasNext()) { ResultRecord rr = (ResultRecord) ri.next(); if (primaryKey.getType() == PrimaryKey.TYPE_INT) result.addElement(getQObjectDb(new Integer(rr.getInt(1)))); else if (primaryKey.getType() == PrimaryKey.TYPE_STRING) result.addElement(getQObjectDb(rr.getString(1))); else if (primaryKey.getType() == PrimaryKey.TYPE_LONG) result.addElement(getQObjectDb(new Long(rr.getLong(1)))); else if (primaryKey.getType() == PrimaryKey.TYPE_COMPOUND) { HashMap keys = ((PrimaryKey)primaryKey.clone()).getKeys(); Iterator ir = keys.keySet().iterator(); while (ir.hasNext()) { String keyName = (String) ir.next(); KeyUnit ku = (KeyUnit) keys.get(keyName); if (ku.getType() == primaryKey.TYPE_INT) { ku.setValue(new Integer(rr.getInt(ku.getOrders() + 1))); } else if (ku.getType() == primaryKey.TYPE_LONG) { ku.setValue(new Long(rr.getLong(ku.getOrders() + 1))); } else { ku.setValue(rr.getString(ku.getOrders() + 1)); } } result.addElement(getQObjectDb(keys)); } } } catch (SQLException e) { LogUtil.getLog(this.getClass()).error("list: " + e.getMessage()); } return result; } public QObjectBlockIterator getQObjects(String query, int startIndex, int endIndex) { return getQObjects(query, "", startIndex, endIndex); } public QObjectBlockIterator getQObjects(String query, String groupName, int startIndex, int endIndex) { Object[] blockValues = getQObjectBlock(query, groupName, startIndex); return new QObjectBlockIterator(this, blockValues, query, groupName, startIndex, endIndex); } public Object[] getQObjectBlock(String sql, String groupName, int startIndex) { int blockSize = table.getBlockSize(); int blockID = startIndex / blockSize; int blockStart = blockID * blockSize; String query = sql; String key = query + blockID; Object[] objArray = null; if (listCachable) { try { objArray = (Object[]) QCache.getInstance().getFromGroup(key, cacheGroup+groupName); } catch (Exception e) { LogUtil.getLog(this.getClass()).error("getQObjectBlock:" + e.getMessage()); } } if (objArray != null) { Object[] objkeys = objArray; if (startIndex >= blockStart + objkeys.length) { return ObjectDb.EMPTY_BLOCK; } else { return objkeys; } } else { Vector block = new Vector(); ResultSet rs = null; Connection conn = new Connection(table.getConnName()); try { conn.setMaxRows(blockSize * (blockID + 1)); rs = conn.executeQuery(query); conn.setFetchSize(blockSize); for (int i = 0; i < blockStart; i++) { rs.next(); } int count = 0; while (rs.next() && count < blockSize) { if (primaryKey.getKeyCount() == 1) { if (primaryKey.getType() == primaryKey.TYPE_INT) block.addElement(new Integer(rs.getInt(1))); if (primaryKey.getType() == primaryKey.TYPE_STRING) block.addElement(rs.getString(1)); if (primaryKey.getType() == primaryKey.TYPE_LONG) block.addElement(new Long(rs.getLong(1))); } else if (primaryKey.getType() == primaryKey.TYPE_COMPOUND) { HashMap keys = ((PrimaryKey)primaryKey.clone()).getKeys(); Iterator ir = keys.keySet().iterator(); while (ir.hasNext()) { String keyName = (String) ir.next(); KeyUnit ku = (KeyUnit) keys.get(keyName); if (ku.getType() == primaryKey.TYPE_INT) { ku.setValue(new Integer(rs.getInt(ku.getOrders() + 1))); } else if (ku.getType() == primaryKey.TYPE_LONG) { ku.setValue(new Long(rs.getLong(ku.getOrders() + 1))); } else { ku.setValue(rs.getString(ku.getOrders() + 1)); } } block.addElement(keys); } count++; } } catch (SQLException sqle) { LogUtil.getLog(this.getClass()).error("getQObjectBlock2:" + sqle.getMessage()); } finally { if (rs != null) { try { rs.close(); } catch (Exception e) {} rs = null; } if (conn != null) { conn.close(); conn = null; } } int len = block.size(); Object[] objkeys = new Object[len]; for (int i = 0; i < len; i++) { objkeys[i] = block.elementAt(i); } if (listCachable) { try { QCache.getInstance().putInGroup(key, cacheGroup+groupName, objkeys); } catch (Exception e) { LogUtil.getLog(this.getClass()).error("getQObjectBlock3:" + e.getMessage()); } } if (startIndex >= blockStart + objkeys.length) { return ObjectDb.EMPTY_BLOCK; } else { return objkeys; } } } public String getString(String field) { return resultRecord.getString(field); } public boolean getBoolean(String field) { return resultRecord.getBoolean(field); } public int getInt(String field) { return resultRecord.getInt(field); } public java.util.Date getDate(String field) { return resultRecord.getDate(field); } public long getLong(String field) { return resultRecord.getLong(field); } public double getDouble(String field) { return resultRecord.getDouble(field); } public float getFloat(String field) { return resultRecord.getFloat(field); } public Object get(String field) { return resultRecord.get(field); } public void set(String field, Object value) { resultRecord.set(field, value); } public void setLoaded(boolean loaded) { this.loaded = loaded; } public void setObjCachable(boolean objCachable) { this.objCachable = objCachable; } public void setListCachable(boolean listCachable) { this.listCachable = listCachable; } public boolean isLoaded() { return loaded; } public ResultRecord getResultRecord() { return resultRecord; } public boolean isObjCachable() { return objCachable; } public boolean isListCachable() { return listCachable; } public boolean objCachable = true; public boolean listCachable = true;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?