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 + -
显示快捷键?