SpringMVC3.0+MyIbatis3.0(分页示例)【转】

主要使用Oracle的三层sql实现分页!

一 环境:XP3+Oracle10g+MyEclipse6+(Tomcat)+JDK1.5

二 工程相关图片:

1 DEMO图片

SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第1张图片

2 工程代码图片

SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第2张图片

3 相关jar包图片

SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第3张图片

三 此示例是在:

SSI:SpringMVC3+Mybatis3(登录及CRUD操作)基础上加的分页功能:

四 主要代码文件

1 BaseController.java用于子类调用方便

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;

}

/**页面状态,这个状态是分页自带的,与业务无关*/

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

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

/**获取下标判断分页状态*/

intindex = PageState.getOrdinal(pageAction);

Page page =null;

/**

* index < 1 只有二种状态

* 1 当首次调用时,分页状态类中没有值为 NULL 返回 -1

* 2 当页面设置每页显示多少条: index=0,当每页显示多少条时,分页类要重新计算

* */

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");...

//获取总条数

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

//设置分页对象

Page page = executePage(request,totalCount);

//如排序

if(page.isSort()){

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

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

}else{

//没有进行排序,默认排序方式

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

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

}

//压入查询参数:开始条数与结束条灵敏

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);

//分页总条数

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注入问题。

在开发时使用: $,方便调试sql,发布时使用: #

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,此页面你不用关心,只管引用就行了

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}条

当前第${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连接池(高效、功能强大、可扩展性好的数据库连接池、监控数据库访问性能、支持Common-Logging、Log4j和JdkLog,监控数据库访问)

2. 提供高并发JMS消息处理机制

3. 所有功能模块化、所有模块服务化、所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机

4. 提供Wink Rest、Webservice服务,故可作为独立服务平台部署

框架整合:

Springmvc + Mybatis + Shiro(权限) + REST(服务) + WebService(服务) + JMS(消息) + Lucene(搜搜引擎) + Quartz(定时调度) + Bootstrap Html5(支持PC、IOS、Android)

框架简介:

项目Maven构建,真实大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供模块化、服务化、原子化的方案,将功能模块进行拆分,可以公用到所有的项目中。架构采用分布式部署架构,所有模块进行拆分,使项目做到绝对解耦,稳定压倒一切~~

持续集成:

1. 我的待办工作流服务(提供Webservice服务)

2. 我的待办工作流集成JMS消息服务(支持高并发,可支持成千上万系统集成)

3. 我的任务提供Rest服务,完成日常的工作管理,通过定时调度平台,动态生成我的任务、循环周期任务、定时邮催提醒完成任务等

4. 文件上传、多线程下载服务化、发送邮件、短信服务化、部门信息服务化、产品信息服务化、信息发布服务化、我的订阅服务化、我的任务服务化、公共链接、我的收藏服务化等

系统模块:

1.  用户管理:

用户信息管理(添加、删除、修改、用户授权、用户栏目管理、查询等)

用户组管理(添加、删除、修改、用户组栏目授权,栏目授权、查询、用户组人员添加查询等)

用户角色管理(添加、删除、修改、用户角色授权、用户角色栏目信息查询设置等)

2.  文章管理:

栏目管理:查询无限极栏目树、创建无限极栏目树分类(导航栏目、图片列表栏目、文章列表栏目、文章内容栏目等)、删除、修改栏目信息。

文章管理:创建、删除、修改文章,多维度文章查询,包括已发布、未发布、所有文章等。文章富文本编辑器、文章多文件上传、文章状态控制等。

3.  系统设置:

数据字典管理:支持中、英文信息,支持无限级别分类配置,动态控制是否可用等。

部门信息管理:支持中、英文无限级别部门信息增加,删除,修改操作,部门列表、树心查询等。

日志管理:系统日志列表查询、在线查看、在线下载等

路线管理:集成百度地图API,提供线路查询管理功能

Druid Monitor(监控):集成阿里巴巴连接池,提供在线连接池监控程序,包括:数据源、SQL监控、URL监控、Session监控、Spring监控等

网站信息管理:通过系统配置文件进行网站内容操作,包括邮件服务器配置、公司基本信息配置等。

4.集成REST服务,可以用作独立服务平台(提供大量实例及测试平台,包括:文件上传下载、邮件短信发送、部门、产品、公共连接、我的收藏、我的任务、信息发布等)

5.  集成Quartz调度,可以用作定时调度平台(动态配置调度类、调度时间,使程序自动执行某些业务)

6.  Lucene搜索引擎,可以将文件资料索引化,支持文件内容搜索、关键字搜索、高亮关键字等,使信息在毫秒内提取查询出来

7.  用户设置功能:包括修改用户信息,修改密码、发送消息,修改个人图片,查看角色、查看用户组,管理员修改角色、用户、用户组等。

8.  集成Webservice平台,包括jaxws服务、CXF框架,配置双加密的权限认证。使服务集成更加安全。

9.  Bootstrap html5提供了两套前台开环境,包括CMS和电子商务网站,使您的开发更加的简洁。

技术点:

1.  Springmvc + Mybatis集成、SpringSecurity权限控制、Spring AOP事务处理。

2.   Wink Rest服务、Webservice服务:jaxws、CXF等

3.  IO 流上传下载文件,多线程操作

4.  发送邮件,配置邮件服务器,发基于html、纯文本格式的邮件

5.  MD5加密 (登陆密码校验加密等),用户统一Session、Cookie管理,统一验证码校验等。

6.  数据库连接池统一配置

7.  Quartz定时调度任务集成(直接通过配置即可)

8.  Httpclient破解验证码,登陆联通充值平台

9.  汉字、英文拆分、可以用作文档关键字搜索等。

10.  Base64图片处理,支持PC,Android,IOS

11.  Service Socket 、Client Socket 通信技术(已经做过GPRS数据获取,并用到了项目中)

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

13.  Maven项目构建,您可以直接做架构,可以提升自己的学习能力,使您成为真正的架构师。

SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第4张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第5张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第6张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第7张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第8张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第9张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第10张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第11张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第12张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第13张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第14张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第15张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第16张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第17张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第18张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第19张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第20张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第21张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第22张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第23张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第24张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第25张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第26张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第27张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第28张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第29张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第30张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第31张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第32张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第33张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第34张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第35张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第36张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第37张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第38张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第39张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第40张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第41张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第42张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第43张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第44张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第45张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第46张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第47张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第48张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第49张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第50张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第51张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第52张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第53张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第54张图片
SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第55张图片

SpringMVC3.0+MyIbatis3.0(分页示例)【转】_第56张图片

你可能感兴趣的:(SpringMVC3.0+MyIbatis3.0(分页示例)【转】)