该分页功能中心思想:
001、为Page类设置 当前页,总记录数,每页记录数
002、将查询的结果集复制给Page的属性容器
003、向前台页面返回Page
做到这三点,其他过程可自己发挥
1、系统常量类
public class Conv
{
// 每页显示条数
public static int pageSize=10;
//登录后放在Session中的User信息
}
2、Page类,包含了可以存放List的容器
public class Page
{
/**当前页*/
private int curPage;
/**总页数*/
private int total;
/**总的记录数*/
private int sum;
/**结果集*/
private List result;
public Page(){}
public Page(int curPage,int sum) {
this.curPage = curPage;
this.sum = sum;
int totalPage =
(int) Math.ceil(sum/Double.parseDouble(Conv.pageSize + ""));
if (totalPage == 0)
totalPage = 1;
this.total=totalPage;
}
public int getCurPage() {
return curPage;
}
public void setCurPage(int curPage) {
this.curPage = curPage;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
public List getResult() {
return result;
}
public void setResult(List result) {
this.result = result;
}
}
3、UnitService类获取SqlSession,利用mybatis的RowBounds进行分页,执行sql语句获得结果集
public class UnitService
{
private static UnitService unitService = null;
Logger LOG = Logger.getLogger(DeptService.class);
private UnitService(){}
public static UnitService getInstance(){
if(unitService==null){
unitService=new UnitService();
}
return unitService;
}
//分页查询单位
public Page queryQyDw(Map<String,Object> params,int currentPage,int pageSize) throws Exception{
List<QyDw> units = null;
int count = 0;
SqlSession session=MybatisUtil.getSqlSessionFactory().openSession();
try{
IunitDao manager=session.getMapper(IunitDao.class);
units=(List<QyDw>)session.selectList("com.xinfeijinxin.qy.dao.IunitDao.queryQyDw", params,new RowBounds((start-1)*Conv.pageSize, limit));
count = manager.queryQyDwCount();
}catch(Exception e){
}finally{
session.close();
}
Page page=new Page(start,count); //初始化分页数据
page.setResult(units); //封装对象
return page;
}
}
4、IunitDao.java 对应UnitDao.xml查询语句
public interface IunitDao
{
/**
* 查询单位列表
*/
public List<QyDw> queryQyDw(Map<String,Object> map);
}
5、UnitDao.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace应对应接口路径-->
<mapper namespace="com.xinfeijinxin.qy.dao.IunitDao">
<!--查询记录,map参数可以根据情况去掉-->
<select id="queryQyDw" parameterType="map" resultType="com.xinfeijinxin.qy.bean.QyDw">
select dwid,dwmc,dwjc,sjdw,dwlx from qy_dw where 1=1
<if test="keyword!=null and keyword !=''">
and dwmc like CONCAT('%','${keyword}','%' )
</if>
<if test="keyword!=null and keyword !=''">
and dwjc like CONCAT('%','${keyword}','%' )
</if>
<if test="keyword!=null and keyword !=''">
and sjdw like CONCAT('%','${keyword}','%' )
</if>
<if test="keyword!=null and keyword !=''">
and dwlx like CONCAT('%','${keyword}','%' )
</if>
</select>
<!-- 查询记录总数-->
<select id="queryQyDwCount" resultType="int">
select count(*) from qy_dw
</select>
</mapper>
6、Action封装前台数据
public class UnitAction extends BaseAction
{
//getter setter()。。。。
private List<QyDw> units=null;
private Page page=null;
private QyDw unit;
//分页查询单位
public String list()
{
// 分页信息设置,接受前台参数
if (page == null)
page = new Page();
// 如果当前页为0,则设置当前页为1
if (page.getCurPage() == 0) {
page.setCurPage(1);
}
try{
Map<String,Object> map=new HashMap<String,Object>();
//map.put("keyword","学");
//将page传至前台
page=UnitService.getInstance().queryQyDw(map, page.getCurPage(), Conv.pageSize);
}catch(DBException e){
logger.error(e.getMessage());
}
return LIST;
}
}
7、BaseAction,设置统一返回的字符串,获取request和response
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class BaseAction extends ActionSupport{
protected HttpServletRequest request; // request
protected HttpServletResponse response; // response
protected ServletContext servletConext; // servletContext
protected HttpSession session; // session
public final String SUCCESS = "success"; //成功
protected String ADD = "add"; // 返回增加
protected String DELETE = "delete"; // 返回删除
protected String UPDATE = "update"; // 返回修改
protected String LIST = "list"; // 返回修改
protected String EXCEPTION="exception"; //返回异常
Logger logger = Logger.getLogger(BaseAction.class);
public HttpServletRequest getRequest() {
return ServletActionContext.getRequest();
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public HttpServletResponse getResponse() {
return ServletActionContext.getResponse();
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
public ServletContext getServletConext() {
return ServletActionContext.getServletContext();
}
public void setServletConext(ServletContext servletConext) {
this.servletConext = servletConext;
}
public HttpSession getSession() {
return ServletActionContext.getRequest().getSession();
}
}
8、前台链接
<div class="btn" style="text-align: center;">
<s:if test="page.curPage <= 1">
<img src="images/firstpage2.png" />
<img src="images/prepage2.png" />
</s:if>
<s:else>
<a href="admin/Unit_list.action?page.curPage=1"><img
src="images/firstpage.png" /> </a>
<a
href="admin/Unit_list.action?page.curPage=<s:property value="%{page.curPage-1}" />"><img
src="images/prepage.png" /> </a>
</s:else>
<s:if test="page.curPage < page.total">
<a
href="admin/Unit_list.action?page.curPage=<s:property value="%{page.curPage+1}" />"><img
src="images/nextpage.PNG" /> </a>
<a
href="admin/Unit_list.action?page.curPage=<s:property value="%{page.total}" />"><img
src="images/lastpage.png" /> </a>
</s:if>
<s:else>
<img src="images/nextpage2.PNG" />
<img src="images/lastpage2.png" />
</s:else>
<select id="page" name="page.curPage"
style="width: 50px; vertical-align: middle;" onchange="jump()">
<s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="1" />
<s:param name="last" value="page.total" />
<s:iterator>
<option value="<s:property value="current-1" />">
<s:property value="current-1" />
</option>
</s:iterator>
</s:bean>
</select>
<script type="text/javascript">
var num = '${page.curPage}';
document.getElementById('page').options[num - 1].selected = true;
</script>
第
<s:property value="%{page.curPage}" />
页 共
<s:property value="%{page.total}" />
页 共
<s:property value="%{page.sum}" />
记录
</div>
分享到:
相关推荐
springbootMybatis 基于mybatis的留言本 基于mybatis的留言本 基于mybatis的留言本 基于mybatis的留言本 基于mybatis的留言本
该项目为基于Mybatis构建的Java分页插件设计源码,包含242个文件,包括159个Java源文件、49个XML配置文件、12个Markdown文档、9个SQL脚本、3个YAML配置文件、3个PNG图片文件、1个EditorConfig文件、1个Git忽略文件、...
MyBatis是一个基于Java的持久层框架,它解决了传统JDBC中的繁琐代码问题,允许开发者编写自定义的SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过XML或注解进行配置...
mybatis 分页 mybatis-...大家知道mybatis自动生成代码是没有分页功能的 我在网上找了很久 有很多内容 但正真可以使用的少之又少 本人整合了网上的资源 整理了基于Oracle数据库的mybatis插件 经测试可以完美运行。。
Mybatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,通过XML或注解方式配置映射关系,提供灵活的SQL查询操作。在SpringBoot中整合Mybatis,主要是通过配置文件设置数据源和Mapper扫描路径,以及引入...
### Java分页工具类及其在Struts、Spring、MyBatis和JSP中的应用 #### 一、Java分页概述 在开发Web应用程序时,为了提高用户体验并减轻服务器压力,通常会采用分页技术来展示大量的数据记录。本文将详细介绍一个...
"十SqlSessionDaoSupport的使用.txt"可能涉及MyBatis-Spring的一个辅助类SqlSessionDaoSupport,它为基于MyBatis的DAO提供了一个基础抽象,简化了与SqlSession的交互。 "九mybatis 代码生成工具的使用.txt"章节介绍...
3. **基于第三方插件的分页**:如MyBatis-Plus,它扩展了MyBatis的功能,提供了更简便的分页API,可以避免手动编写分页SQL。 **三、MyBatis分页实战** 1. **自定义Page对象**:创建一个Page对象,包含当前页数、每...
基于MyBatis Plus的代码生成器 项目简介 本项目是一个基于MyBatis Plus的代码生成器,旨在通过MyBatis Generator插件自动生成基于MyBatis Plus的DAO层代码(包括entity、mapper)和服务层代码。该生成器增强了...
Mybatis-Plus是一个基于Mybatis框架的扩展工具,它在Mybatis的基础上简化了开发过程,提供了更为便捷的数据操作API。这个入门教程旨在帮助初学者快速理解并掌握如何使用Mybatis-Plus进行数据库的增删改查(CRUD)...
MyBatis作为一款轻量级的Java持久层框架,它允许开发者自由地编写SQL语句,同时也支持自定义分页策略。 在传统的物理分页中,我们需要考虑如何有效地获取数据库中特定范围的数据,避免一次性加载大量数据导致内存...
该项目为Java语言开发的Mybatis通用分页插件,包含137个文件,其中Java源文件84个、XML配置文件35个、SQL文件7个,并附带少量Markdown、properties和LICENSE文件。
本源码为基于Mybatis的分页插件工具设计,包含38个Java文件、5个XML文件等,共48个文件。该项目旨在为Mybatis用户提供一个通用、高效的分页插件解决方案,支持12种数据库,通过最少的代码完成分页数据读取,适用于...
【标题】"DWZ+JAVA+Mybatis+SpirngMVC"揭示了这是一个基于这些技术构建的Web应用程序项目。DWZ全称为“Dynamic Web Zone”,是一个前端JavaScript框架,主要用于快速开发响应式和交互式的Web应用。Java是后端的主要...
本项目是基于Spring和MyBatis框架实现的物理分页,让我们来深入探讨这个主题。 首先,Spring是一个开源的Java应用程序框架,它提供了一种依赖注入(Dependency Injection,DI)的方式来管理对象,使得代码更加模块...
Mybatis通用Mapper插件是一个基于Mybatis的增强工具,旨在简化数据库操作,提高开发效率。它通过提供通用的CRUD操作接口,减少了手动编写SQL语句的工作量,同时保留了Mybatis的原生特性。 主要功能模块 代码生成...
在本项目中,我们主要探讨的是如何利用Spring MVC和MyBatis两大流行框架构建一个具有分页查询功能的Web应用。Spring MVC作为控制层,负责处理HTTP...理解并掌握这些知识点,对于开发基于Java的Web应用是非常重要的。
【标题】"mybatis分页完整的项目"是一个涵盖了MyBatis分页功能的完整Java Web项目,旨在帮助开发者理解和实现MyBatis在实际应用中的分页处理。该项目结合了Spring和MyBatis两大流行框架,提供了从数据库查询数据并...
# 基于MyBatis的家电管理系统 ## 项目简介 本项目是一个基于MyBatis框架的家电管理系统,旨在提供对家电信息的增删改查功能。系统通过MyBatis与MySQL数据库进行交互,实现了对家电、订单和用户信息的管理。 ## ...
此时,可以考虑使用其他的分页策略,如游标分页或基于主键的分页。 8. **源码分析** 分析源码可以帮助我们理解分页插件的内部实现机制,包括如何解析SQL、如何插入分页条件、如何处理不同数据库的差异等。这有助于...