代價總是會有的,不是開發快就是效率低。如果你在收到類似於這類任務
本頁顯示所有等級段內的人數
等級h府
g房f場
e場d場
c營b營
a營i館
j院k倉
l倉m集
1-10
10-20
20-30
30-40 5
6 78 9
10 …
至100
表結構:
idlevel
buildid (建築型別)
uid在我想到這個點子的時候不是為了解決上面這個查詢,而是為了解決一堆這樣的查詢。
本來是以為用一些表示式來做,但是實際上我發現按照如下的方法更直觀,沒有任何學習成本。
如果你發現結果和你預想的不同。那麼久斷點下,看看生成的sql是否是正確的。這裡有乙個拼接sql字串的東西。
當你還在想破腦筋為了這些無聊的東西發愁的時候,有這麼一小段**幫你偷工減料。
1、構造乙個result物件
public class result
2、result result = new result();
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.select.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
listusers = playermng.findbyhql("from user where name = '"
+ username + "'");
if (users.size() != 0)
3、select!
public list parserhql(result result)
for (string where : result.where)
sql += groupsql;
list l = dao.findbyhql(sql);
if (l != null && l.size() > 0)
// map.put(sarr[0], obj);
arr[i] = obj;
i++;
}list.add(arr);
} return list;
}
構造result 物件的時候別看字多,邏輯非常簡單。不用去想什麼sql怎麼寫。
groop list儲存的是y軸條件,
where list 儲存的是總條件。如查詢uid為***的 這個報表
select list 儲存的是顯示內容和查詢sql(主)
陣列第0個元素為顯示內容,第乙個元素為sql的條件。 這個條件會替換掉x軸sql裡面的 ?
如果x軸是帶group的sql 並且還有總條件那麼需要用#代替。
如果想order一下,這個功能還沒加。不過也就是根據最終的list 排序而已。
如果想分頁?我覺得這類查詢不需要分頁。
如果想優化效能?當然可以,毫無疑問雖然寫了那麼多。實際上乙個結果集中大概80%的查詢內容是可以從同乙個sql結果集中取出結果。每合併乙個查詢結果會減少y軸數量 個查詢 ~
這裡只是拋磚引玉,只適合存在y軸條件的查詢。如果你優化的足夠好,就像上面說的那樣合併查詢內容。實際上和你去搗鼓sql的效果一樣。一般是不需要分頁的,排序更不是問題。
原理就是 y軸條件+x軸條件 一定是單一值,然後寫個程式迴圈下 再把結果拼起來。
---再貼幾個實現。
本頁顯示對應等級的數量,以及擁有對應等級的人數
等級數量
人數一級
二級**
四級五級
六級七級
八級九級
result result = new result();
result.select.add(new string );
result.select.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
result.group.add(new string );
再更新乙個。。。這個本來不想用這種方法的。。但是突然開始頭痛。。。分頁方式示例。讓分頁、排序也成浮雲。
result result = new result();
result.select
.add(new string );
result.select
.add(new string );
result.select
.add(new string );
pagination pagination2 = mallmng
.findbysql(
"select date_format(record_time, '%y-%m') from t_gold_record group by date_format(record_time, '%y-%m') desc",
pageno, getcookiecount());
for (object obj : pagination2.getlist()) );
} list list = mallmng.parsersql(result);
vf
表結構id
type
numuid
record_time
這次呢,沒有y軸了,表面上看起來沒有y軸 實際上y軸大家心裡都知道了。就是record_time 的月份 y軸由一段查詢結果構成,因為這段結果是分頁的,相當於整個報表也是分頁的!同時y軸排序=對整個報表排序。
Android ADB超簡單的安裝方法
1.先檢查adb是否可以使用了。不能則開始安裝。開啟命令提示符 windows開始鍵 r 輸入cmd 後確認 輸入adb,如果出現一大串的東西,那就行,要不然它會告訴你不是內部或外部命令,也是不可執行的程式或批處理檔案。2.找到adb的存放路徑就行。as2.2以後一般存在於sdk的platform ...
陣列去重的簡單方法
set物件允許你儲存任何型別的唯一值,無論是原始值或者是物件引用。function removerepeatelement arr 注意 要用array.from 來將set物件轉換成乙個真的陣列。function removerepeatelement arr 遍歷源陣列,判斷新陣列中有沒有源陣列...
陣列去重的幾種簡單方法
今天學習一下陣列去重的幾種方法,雖然不全但是實用 方法一 let arr 1 2,3 5,4 8,8 4,8 8,2 2 function chuanru arr return newarr console.log chuanru arr script 使用了push與indexof進行去重 pus...