CompanyManager項(xiàng)目簡介
該項(xiàng)目的搭建環(huán)境:
項(xiàng)目管理:maven
框架:spring、springmvc、mybatis、easyui
數(shù)據(jù):mysql
主要用途:實(shí)現(xiàn)了用戶管理、菜單管理、部門管理、理財(cái)管理、理財(cái)報(bào)表、待辦管理、字典管理等多個(gè)功能,可作為有具體需要的朋友提供參考的demo,也可作為新手學(xué)習(xí)的demo。
碼云地址:https://git.oschina.net/xi_fan/CompanyManager.git
目前該項(xiàng)目已經(jīng)搭建在騰訊云上,有需要的朋友可以登錄訪問:http://123.207.236.102:8080/ssm_template/pages/login.jsp
超級(jí)管理員用戶名:system
超級(jí)管理員密碼:123
需求說明:
- 該項(xiàng)目的菜單主要可以分為兩種,一是項(xiàng)目系統(tǒng)的菜單,需要編寫相應(yīng)的代碼進(jìn)行連接,二是web的菜單,只要提供鏈接既可以點(diǎn)擊后實(shí)現(xiàn)跳轉(zhuǎn)。
- 主要實(shí)現(xiàn)菜單的crud。
菜單管理板塊具體實(shí)現(xiàn):
- 項(xiàng)目的分層以及具體實(shí)現(xiàn)跟用戶管理板塊類似,可以直接查看源碼。
在這里我要談?wù)勎沂侨绾芜M(jìn)行mybatis的物理分頁的:
學(xué)過mybatis的都知道,mybatis使用RowBounds實(shí)現(xiàn)的分頁是邏輯分頁,也就是先把數(shù)據(jù)記錄全部查詢出來,然在再根據(jù)offset和limit截?cái)嘤涗浄祷貫榱嗽跀?shù)據(jù)庫層面上實(shí)現(xiàn)物理分頁,如果我們不想改變?cè)瓉鞰yBatis的函數(shù)邏輯,又實(shí)現(xiàn)物理分頁,可以編寫plugin截獲MyBatis Executorstatementhandler,重寫SQL來執(zhí)行查詢。
那么我是如何在整個(gè)項(xiàng)目中進(jìn)行實(shí)現(xiàn)的呢?
我所做的就是在view層、controller層以及Model層三個(gè)層中傳遞一個(gè)PageInfo對(duì)象,該對(duì)象綁定著分頁的信息。
在controller層:
@RequestMapping(value = "/queryUser")
public String queryUser(Model model, @ModelAttribute(value = "pageInfo") PageInfo<UserInfo> pageInfo,@ModelAttribute(value = "user") UserInfo userInfo, @ModelAttribute(value = "dept") DeptInfo dept) { //實(shí)現(xiàn)業(yè)務(wù) }
在service層:將PageInfo打包成RowBounds對(duì)象后傳給dao層
public ArrayList<UserInfo> queryUsers(Map<String, String> map,PageInfo<UserInfo> pageInfo) {
return userInfoDao.queryUsers(new RowBounds(pageInfo.getFromRecord(),pageInfo.getPageSize()), map);}
在mybatis配置文件中配置plugin:interceptor屬性指向攔截器;
<plugins>
<plugin interceptor="cn.springmvc.utildao.PaginationInterceptor" />
</plugins>
而PaginationInterceptor可以查看項(xiàng)目中cn.springmvc.utildao的源碼,
對(duì)于主要實(shí)現(xiàn)數(shù)據(jù)庫的CRUD的mapper沒有任何變化。
至于下一篇文章就待定了。
Note: 歡迎有興趣的小伙伴們fork該項(xiàng)目,一起為完善該項(xiàng)目!??!