qobjectdb.java
来自「cwbbs 云网论坛源码」· Java 代码 · 共 1,053 行 · 第 1/3 页
JAVA
1,053 行
if (!listCachable) return; try { QCache.getInstance().invalidateGroup(cacheGroupCount + groupName); QCache.getInstance().invalidateGroup(cacheGroup + groupName); } catch (Exception e) { LogUtil.getLog(this.getClass()).error(e.getMessage()); } } public void refreshCreate() { refreshCreate(""); } public void refreshCreate(String groupName) { if (!listCachable) return; refreshList(groupName); } public void refreshSave(PrimaryKey pk) { if (!objCachable) return; refresh(pk); } public void refreshDel(PrimaryKey pk) { refreshDel(pk, ""); } public void refreshDel(PrimaryKey pk, String groupName) { try { if (objCachable) refresh(pk); if (listCachable) { refreshList(groupName); } } catch (Exception e) { LogUtil.getLog(this.getClass()).error("refreshDel:" + e.getMessage()); } } public boolean del() throws ResKeyException { return del(new JdbcTemplate(new Connection(table.getConnName()))); } public boolean del(JdbcTemplate jt) throws ResKeyException { boolean re = false; Object[] params = primaryKey.toObjectArray(); try { re = jt.executeUpdate(table.getQueryDel(), params) == 1; } catch (SQLException e) { LogUtil.getLog(getClass()).error("del:" + e.getMessage()); throw new ResKeyException(SkinUtil.ERR_DB); } refreshDel(primaryKey); return re; } public boolean save(JdbcTemplate jt, Object[] params) throws SQLException { boolean re = false; re = jt.executeUpdate(table.getQuerySave(), params) == 1; refreshSave(primaryKey); return re; } public boolean save() throws ResKeyException { return save(new JdbcTemplate(new Connection(table.getConnName()))); } public synchronized boolean save(ParamChecker paramChecker) throws ResKeyException, ErrMsgException { return save(new JdbcTemplate(new Connection(table.getConnName())), paramChecker); } public synchronized boolean save(JdbcTemplate jt, ParamChecker paramChecker) throws ResKeyException, ErrMsgException { String[] fieldsForSave = getFieldsFromQuerySave(); if (fieldsForSave == null) throw new IllegalArgumentException("fieldsForSave is null."); int len = fieldsForSave.length; ResultRecord resultRecord = getResultRecord(); for (int i = 0; i < len; i++) { resultRecord.set(fieldsForSave[i], paramChecker.getValue(fieldsForSave[i])); } return save(jt); } public boolean save(JdbcTemplate jt) throws ResKeyException { String[] fieldsForSave = getFieldsFromQuerySave(); if (fieldsForSave == null) return false; int len = fieldsForSave.length; Object[] paramsPk = primaryKey.toObjectArray(); Object[] params = new Object[fieldsForSave.length + paramsPk.length]; for (int i = 0; i < len; i++) { params[i] = resultRecord.get(fieldsForSave[i]); } len = params.length; int k = 0; for (int i = fieldsForSave.length; i < len; i++) { params[i] = paramsPk[k]; k++; } boolean re = false; try { re = save(jt, params); } catch (SQLException e) { LogUtil.getLog(getClass()).error("save:" + e.getMessage()); throw new ResKeyException(SkinUtil.ERR_DB); } return re; } public String[] getFieldsFromQueryCreate() { String queryCreate = table.getQueryCreate(); int p = queryCreate.indexOf("("); int q = queryCreate.indexOf(")"); if (p == -1) return null; if (q == -1) return null; String str = queryCreate.substring(p + 1, q); str = str.replaceAll(" ", ""); String[] ary = StrUtil.split(str, ","); return ary; } public String[] getFieldsFromQuerySave() { String querySave = table.getQuerySave(); int p = querySave.indexOf("set"); if (p == -1) return null; p += 4; int q = querySave.indexOf("where"); String str = querySave.substring(p, q - 1); str = str.replaceAll(" ", ""); str = str.replaceAll("=\\?", ""); String[] ary = StrUtil.split(str, ","); return ary; } public ListResult listResult(String sql, Object[] params, int curPage, int pageSize) throws ResKeyException { return listResult(Global.defaultDB, sql, params, curPage, pageSize); } public ListResult listResult(String connName, String sql, Object[] params, int curPage, int pageSize) throws ResKeyException { int total = 0; Vector result = new Vector(); ListResult lr = new ListResult(); lr.setTotal(total); lr.setResult(result); JdbcTemplate jt = new JdbcTemplate(new Connection(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); } int totalpages = (int) Math.ceil((double) total / pageSize); if (curPage > totalpages) curPage = totalpages; if (curPage <= 0) curPage = 1; jt = new JdbcTemplate(new Connection(connName)); if (total != 0) { jt.getConnection().setMaxRows(curPage * pageSize); } ri = jt.executeQuery(sql, params, curPage, pageSize); 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("listResult:" + e.getMessage()); throw new ResKeyException(SkinUtil.ERR_DB); } lr.setResult(result); lr.setTotal(total); return lr; } public ListResult listResult(String sql, int curPage, int pageSize) throws ResKeyException { return listResult(new JdbcTemplate(new Connection(table.getConnName())), sql, curPage, pageSize); } public ListResult listResult(JdbcTemplate jt, String sql, int curPage, int pageSize) throws ResKeyException { int total = 0; ResultSet rs = null; Vector result = new Vector(); ListResult lr = new ListResult(); lr.setTotal(total); lr.setResult(result); 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; } int totalpages = (int) Math.ceil((double) total / pageSize); if (curPage > totalpages) curPage = totalpages; if (curPage <= 0) curPage = 1; if (total != 0) conn.setMaxRows(curPage * pageSize); rs = conn.executeQuery(sql); if (rs == null) { return lr; } else { rs.setFetchSize(pageSize); int absoluteLocation = pageSize * (curPage - 1) + 1; if (rs.absolute(absoluteLocation) == false) { return lr; } 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("listResult:" + StrUtil.trace(e)); throw new ResKeyException(SkinUtil.ERR_DB); } finally { if (rs != null) { try { rs.close(); } catch (Exception e) {} rs = null; } if (conn != null) { conn.close(); conn = null; } } lr.setResult(result); lr.setTotal(total); return lr; } public Vector list() { return list(new JdbcTemplate(new Connection(table.getConnName())), table.getQueryList()); } public Vector list(String sql) { return list(new JdbcTemplate(new Connection(table.getConnName())), sql); } public Vector list(String sql, Object[] params) { return list(new JdbcTemplate(new Connection(table.getConnName())), sql, params); }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?