SpringMVC3.0+MyIbatis3.0(分頁示例)【轉(zhuǎn)】

主要使用Oracle的三層sql實現(xiàn)分頁!

一 環(huán)境:XP3+Oracle10g+MyEclipse6+(Tomcat)+JDK1.5

二 工程相關(guān)圖片:

1 DEMO圖片

2 工程代碼圖片

3 相關(guān)jar包圖片

三 此示例是在:

SSI:SpringMVC3+Mybatis3(登錄及CRUD操作)基礎(chǔ)上加的分頁功能:

四 主要代碼文件

1 BaseController.java用于子類調(diào)用方便

Java代碼

packagecom.liuzd.ssm.web;

importjavax.servlet.http.HttpServletRequest;

importcom.liuzd.page.Page;

importcom.liuzd.page.PageState;

importcom.liuzd.page.PageUtil;

publicclassBaseController?{

protectedPage?executePage(HttpServletRequest?request,Long?totalCount){

if(null==?totalCount){

totalCount?=?0L;

}

/**頁面狀態(tài),這個狀態(tài)是分頁自帶的,與業(yè)務(wù)無關(guān)*/

String?pageAction?=?request.getParameter("pageAction");

String?value?=?request.getParameter("pageKey");

/**獲取下標(biāo)判斷分頁狀態(tài)*/

intindex?=?PageState.getOrdinal(pageAction);

Page?page?=null;

/**

*?index?<?1?只有二種狀態(tài)

*?1?當(dāng)首次調(diào)用時,分頁狀態(tài)類中沒有值為?NULL?返回?-1

*?2?當(dāng)頁面設(shè)置每頁顯示多少條:?index=0,當(dāng)每頁顯示多少條時,分頁類要重新計算

*?*/

Page?sessionPage?=?getPage(request);

if(index?<1){

page?=?PageUtil.inintPage(totalCount,index,value,sessionPage);

}else{

page?=?PageUtil.execPage(index,value,sessionPage);

}

setSession(request,page);

returnpage;

}

privatePage?getPage(HttpServletRequest?request)?{

Page?page?=?(Page)request.getSession().getAttribute(PageUtil.SESSION_PAGE_KEY);

if(page?==null){

page?=newPage();

}

returnpage;

}

privatevoidsetSession(HttpServletRequest?request,Page?page)?{

request.getSession().setAttribute(PageUtil.SESSION_PAGE_KEY,page);

}

}

2 UserController.java

Java代碼

packagecom.liuzd.ssm.web;

importjava.util.HashMap;

importjava.util.List;

importjava.util.Map;

importjavax.annotation.Resource;

importjavax.servlet.http.HttpServletRequest;

importorg.springframework.stereotype.Controller;

importorg.springframework.web.bind.annotation.PathVariable;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.SessionAttributes;

importorg.springframework.web.servlet.ModelAndView;

importcom.liuzd.page.Page;

importcom.liuzd.ssm.entity.User;

importcom.liuzd.ssm.service.UserService;

@Controller

@RequestMapping("/user")

@SessionAttributes("userList")

publicclassUserControllerextendsBaseController{

privateUserService?userService;

publicUserService?getUserService()?{

returnuserService;

}

@Resource

publicvoidsetUserService(UserService?userService)?{

this.userService?=?userService;

}

@RequestMapping("/userList")

publicModelAndView?userList(HttpServletRequest?request){

Map?params?=newHashMap();

//添加查詢條件

//?...?params.put("name","jack");...

//獲取總條數(shù)

Long?totalCount?=this.getUserService().pageCounts(params);

//設(shè)置分頁對象

Page?page?=?executePage(request,totalCount);

//如排序

if(page.isSort()){

params.put("orderName",page.getSortName());

params.put("descAsc",page.getSortState());

}else{

//沒有進(jìn)行排序,默認(rèn)排序方式

params.put("orderName","age");

params.put("descAsc","asc");

}

//壓入查詢參數(shù):開始條數(shù)與結(jié)束條靈敏

params.put("startIndex",?page.getBeginIndex());

params.put("endIndex",?page.getEndinIndex());

ModelAndView?mv?=newModelAndView();

//查詢集合

List?users?=this.getUserService().pageList(params);

mv.addObject("userList",users);

mv.setViewName("userList");

returnmv;

}

}

3 UserMapper.java

Java代碼

packagecom.liuzd.ssm.mapper;

importjava.util.List;

importjava.util.Map;

importorg.apache.ibatis.session.RowBounds;

importcom.liuzd.ssm.entity.User;

publicinterfaceUserMapper{

//?.....

publicList?pageList(Map?params);

//分頁總條數(shù)

publicLong?pageCounts(Map?p);

}

4 UserMapper.xml

Java代碼


"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select?ttt.*?from(select?tt.*,rownum?rn?from(select?*?from?users


特別提醒一下,?$只是字符串拼接,?所以要特別小心sql注入問題。

在開發(fā)時使用:?$,方便調(diào)試sql,發(fā)布時使用:?#

and?name?like?#{name},

-->

and?name?like'%${name}%'

and?sex?=?#{sex}

order?by?${orderName}?${descAsc}?)tt)ttt

rn?>?${startIndex}


select?count(*)?from?users

and?name?like?#{name}

and?sex?=?#{sex}

5 userList.jsp

Java代碼

<%@?page?language="java"pageEncoding="UTF-8"contentType="text/html;?charset=UTF-8"%>

<%@?taglib?uri="/WEB-INF/c.tld"prefix="c"%>

<%@?include?file="/common/meta.jsp"%>

姓名${page.sortName?eq"name"??page.sortInfo?:?page.defaultInfo}

年齡${page.sortName?eq"age"??page.sortInfo?:?page.defaultInfo}

性別${page.sortName?eq"sex"??page.sortInfo?:?page.defaultInfo}

地址${page.sortName?eq"address"??page.sortInfo?:?page.defaultInfo}

操作

${user.name}

${user.age}

${user.sex?eq1?"男":?user.sex?eq2?"女":"未知"}

${user.address}

hrf="${pageContext.request.contextPath}/user/toAddUser.do">添加

href="${pageContext.request.contextPath}/user/getUser/${user.id}.do">編輯

href="${pageContext.request.contextPath}/user/delUser/${user.id}.do">刪除

返回

6 page.jsp,此頁面你不用關(guān)心,只管引用就行了

Java代碼<%@?page?language="java"contentType="text/html;?charset=UTF-8"pageEncoding="UTF-8"%>

<%@?taglib?uri="/WEB-INF/c.tld"prefix="c"%>

共${page.totalCount}條記錄?共${page.totalPage}頁?每頁顯示${page.everyPage}條

當(dāng)前第${page.currentPage}頁

<<首頁 <上頁

<<首頁

<上一頁

||

下頁> 尾頁>>

下一頁>

末頁>>


onchange="getCurrentPage(this.value);">

第${index}頁


每頁顯示:

${pageCount}條

function?getCurrentPage(index){

var?a?=?document.getElementById("indexPageHref");

a.href?='${pathurl}?pageAction=gopage&pageKey='+index+'${urlParams}';

a.setAttribute("onclick",'');

a.click("return?false");

}

function?setEveryPage(everyPage){

var?a?=?document.getElementById("indexPageHref");

var?currentPage?=?document.getElementById('indexChange').value;

a.href?='${pathurl}?pageAction=setpage&pageKey='+everyPage+'${urlParams}';

a.setAttribute("onclick",'');

a.click("return?false");

}

function?sortPage(sortName){

var?a?=?document.getElementById("indexPageHref");

a.href?='${pathurl}?pageAction=sort&pageKey='+sortName+'${urlParams}';

a.setAttribute("onclick",'');

a.click("return?false");

}

1. 使用阿里巴巴Druid連接池(高效、功能強(qiáng)大、可擴(kuò)展性好的數(shù)據(jù)庫連接池、監(jiān)控數(shù)據(jù)庫訪問性能、支持Common-Logging、Log4j和JdkLog,監(jiān)控數(shù)據(jù)庫訪問)

2. 提供高并發(fā)JMS消息處理機(jī)制

3. 所有功能模塊化、所有模塊服務(wù)化、所有服務(wù)原子化的方式,提供可拓展的服務(wù)模型,使程序穩(wěn)定運行,永不宕機(jī)

4. 提供Wink Rest、Webservice服務(wù),故可作為獨立服務(wù)平臺部署

框架整合:

Springmvc + Mybatis + Shiro(權(quán)限) + REST(服務(wù)) + WebService(服務(wù)) + JMS(消息) + Lucene(搜搜引擎) + Quartz(定時調(diào)度) + Bootstrap Html5(支持PC、IOS、Android)

框架簡介:

項目Maven構(gòu)建,真實大型互聯(lián)網(wǎng)架構(gòu),做到高并發(fā),大數(shù)據(jù)處理,整個項目使用定制化服務(wù)思想,提供模塊化、服務(wù)化、原子化的方案,將功能模塊進(jìn)行拆分,可以公用到所有的項目中。架構(gòu)采用分布式部署架構(gòu),所有模塊進(jìn)行拆分,使項目做到絕對解耦,穩(wěn)定壓倒一切~~

持續(xù)集成:

1. 我的待辦工作流服務(wù)(提供Webservice服務(wù))

2. 我的待辦工作流集成JMS消息服務(wù)(支持高并發(fā),可支持成千上萬系統(tǒng)集成)

3. 我的任務(wù)提供Rest服務(wù),完成日常的工作管理,通過定時調(diào)度平臺,動態(tài)生成我的任務(wù)、循環(huán)周期任務(wù)、定時郵催提醒完成任務(wù)等

4. 文件上傳、多線程下載服務(wù)化、發(fā)送郵件、短信服務(wù)化、部門信息服務(wù)化、產(chǎn)品信息服務(wù)化、信息發(fā)布服務(wù)化、我的訂閱服務(wù)化、我的任務(wù)服務(wù)化、公共鏈接、我的收藏服務(wù)化等

系統(tǒng)模塊:

1.? 用戶管理:

用戶信息管理(添加、刪除、修改、用戶授權(quán)、用戶欄目管理、查詢等)

用戶組管理(添加、刪除、修改、用戶組欄目授權(quán),欄目授權(quán)、查詢、用戶組人員添加查詢等)

用戶角色管理(添加、刪除、修改、用戶角色授權(quán)、用戶角色欄目信息查詢設(shè)置等)

2. ?文章管理:

欄目管理:查詢無限極欄目樹、創(chuàng)建無限極欄目樹分類(導(dǎo)航欄目、圖片列表欄目、文章列表欄目、文章內(nèi)容欄目等)、刪除、修改欄目信息。

文章管理:創(chuàng)建、刪除、修改文章,多維度文章查詢,包括已發(fā)布、未發(fā)布、所有文章等。文章富文本編輯器、文章多文件上傳、文章狀態(tài)控制等。

3.? 系統(tǒng)設(shè)置:

數(shù)據(jù)字典管理:支持中、英文信息,支持無限級別分類配置,動態(tài)控制是否可用等。

部門信息管理:支持中、英文無限級別部門信息增加,刪除,修改操作,部門列表、樹心查詢等。

日志管理:系統(tǒng)日志列表查詢、在線查看、在線下載等

路線管理:集成百度地圖API,提供線路查詢管理功能

Druid Monitor(監(jiān)控):集成阿里巴巴連接池,提供在線連接池監(jiān)控程序,包括:數(shù)據(jù)源、SQL監(jiān)控、URL監(jiān)控、Session監(jiān)控、Spring監(jiān)控等

網(wǎng)站信息管理:通過系統(tǒng)配置文件進(jìn)行網(wǎng)站內(nèi)容操作,包括郵件服務(wù)器配置、公司基本信息配置等。

4.集成REST服務(wù),可以用作獨立服務(wù)平臺(提供大量實例及測試平臺,包括:文件上傳下載、郵件短信發(fā)送、部門、產(chǎn)品、公共連接、我的收藏、我的任務(wù)、信息發(fā)布等)

5.? 集成Quartz調(diào)度,可以用作定時調(diào)度平臺(動態(tài)配置調(diào)度類、調(diào)度時間,使程序自動執(zhí)行某些業(yè)務(wù))

6.? Lucene搜索引擎,可以將文件資料索引化,支持文件內(nèi)容搜索、關(guān)鍵字搜索、高亮關(guān)鍵字等,使信息在毫秒內(nèi)提取查詢出來

7.? 用戶設(shè)置功能:包括修改用戶信息,修改密碼、發(fā)送消息,修改個人圖片,查看角色、查看用戶組,管理員修改角色、用戶、用戶組等。

8.? 集成Webservice平臺,包括jaxws服務(wù)、CXF框架,配置雙加密的權(quán)限認(rèn)證。使服務(wù)集成更加安全。

9.? Bootstrap html5提供了兩套前臺開環(huán)境,包括CMS和電子商務(wù)網(wǎng)站,使您的開發(fā)更加的簡潔。

技術(shù)點:

1.? Springmvc + Mybatis集成、SpringSecurity權(quán)限控制、Spring AOP事務(wù)處理。

2.? ?Wink Rest服務(wù)、Webservice服務(wù):jaxws、CXF等

3.? IO 流上傳下載文件,多線程操作

4.? 發(fā)送郵件,配置郵件服務(wù)器,發(fā)基于html、純文本格式的郵件

5.? MD5加密 (登陸密碼校驗加密等),用戶統(tǒng)一Session、Cookie管理,統(tǒng)一驗證碼校驗等。

6.? 數(shù)據(jù)庫連接池統(tǒng)一配置

7.? Quartz定時調(diào)度任務(wù)集成(直接通過配置即可)

8.? Httpclient破解驗證碼,登陸聯(lián)通充值平臺

9.? 漢字、英文拆分、可以用作文檔關(guān)鍵字搜索等。

10.? Base64圖片處理,支持PC,Android,IOS

11.? Service Socket?、Client Socket?通信技術(shù)(已經(jīng)做過GPRS數(shù)據(jù)獲取,并用到了項目中)

12.? 提供大量工具類,可以直接使用

13.? Maven項目構(gòu)建,您可以直接做架構(gòu),可以提升自己的學(xué)習(xí)能力,使您成為真正的架構(gòu)師。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 這部分主要是開源Java EE框架方面的內(nèi)容,包括Hibernate、MyBatis、Spring、Spring ...
    雜貨鋪老板閱讀 1,424評論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,881評論 18 139
  • 說實話,當(dāng)我一篇不落地讀完這些溫暖得讓人落淚的文字,我是有些羨慕瀟瀟和歌平的,她們有一位這么好的爺爺,何其幸運!我...
    簡之寧閱讀 477評論 8 14
  • 理解:在表單的驗證過程中,我們不僅要驗證是否為空,格式是否正確也非常重要。就像郵箱,如果我們沒有格式驗證的話,那么...
    snoweek閱讀 477評論 0 2
  • 項目中使用了renderscript-v8.jar,在Eclipse中項目可以正常run,但是android st...
    MrRock閱讀 1,995評論 0 2