對天乙社群bbscs8實現的詳細分析三

2021-04-18 21:01:54 字數 2625 閱讀 4704

此文為**:http://www.diybl.com/course/1_web/webjs/2007113/82989.html

ok!我們直接進入dao層:先看介面,發現與service介面層的方法並不相同,主要是由於service層有些方法是業務處理用,而不是用於資料處理,如createboard,updateboard,findboardsalltree,getboardpermission,getboardmasterpermission,isboardmaster,當然dao介面層也有一些方法是沒有的:findboardsneedcount,findboardsinidsfindboardsidbyparentidinuse等等,我們看其實現吧:

進入com.laoer.bbscs.boardhibernatedao中首先是一些字元常量:

private static final string loads_by_parentid_by_order = "from board where parentid = ? order by orders";

private static final string loads_all = "from board";

public static final string find_boards = new string[3];

public static final string load_next_order = "select max(orders) from board where parentid = ?";

private static final string load_ids_in_use = "select id from board where parentid = ? and usestat = 1";

我們看幾個重點的實現方法:

public list findboardsbyparentid(long pid)

其過載方法:

public list findboardsbyparentid(final long pid, final int usestat, final int hidden, final int ordertype)

if (hidden != -1)

if (ordertype != -1)

if (ordertype == constant.find_boards_by_mainpostnum)

if (ordertype == constant.find_boards_by_postnum)

}return c.list();

}});}

其中用到了條件查詢(criteria query),參考http://blog.sina.com.cn/u/4a5e7dc401000878 和http://hi.baidu.com/yaolihui/blog/item/7c77b58286a56792f703a663.html,而public list findboardidsbyparentid(final long pid, final int usestat, final int hidden, final int ordertype)採用了構造hql語句的方式來完成查詢!根據parentid預取得board序列:

public int getnextorder(long pid) else

} else

}public int getpostsumnum(final int mainorall, final int usestat, final int hidden)

if (mainorall == 1)

if (usestat != -1)

if (hidden != -1)

return c.list();

}});if (!list.isempty())

}return sum;

}public list findboardsinids(final list ids, final int usestat, final int hidden) else if (ids.isempty()) else

if (usestat != -1)

if (hidden != -1)

c.addorder(order.asc("orders"));

return c.list();

}});}

public list findboardsneedcount(final int usestat, final int hidden)

if (hidden != -1)

c.addorder(order.desc("mainpostnum"));

c.addorder(order.desc("postnum"));

return c.list();

}});}

public list findboardsbyparentid(final long pid, final int usestat, final int hidden)

if (hidden != -1)

return c.list();

}});}

public list findboardsidbyparentidinuse(long pid)

ok!分析完畢!當然,對於具體的方法是怎麼被用上的,要看web層了.

程式設計實現對乙個8bit資料的指定為的置零或置一操作

編碼實現以下功能的函式 功能 實現對乙個8bit的資料 unsigned char型別 的指定位 例如第n位 的置零或者置1操作,並保持其他位不變。void bit set unsigned char p data,unsigned char position,int flag 引數說明 p dat...

V8引擎對JS陣列的一些實現優化

vart newarray 200000 console time time1 for vari 0 i 200000 i console timeend time1 vart console time time2 for vari 0 i 200000 i console timeend time...

第8周專案3 對稱矩陣壓縮儲存的實現與應用 1

問題及 檔名稱 cpp1.作 者 薛瑞琪 完成日期 2017 年 10 月 19 日 版 本 號 v1.0 問題描述 用壓縮形式儲存對稱矩陣,實現下面的操作並測試 void init int b 為n階對稱矩陣初始化儲存資料的一維陣列b int value int b,int i,int j 返回儲...