`

java分页(基于mybatis)

    博客分类:
  • Util
 
阅读更多

该分页功能中心思想:

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>
 

 

分享到:
评论

相关推荐

    Java实现留言回复和分页-基于mybatis的留言本

    springbootMybatis 基于mybatis的留言本 基于mybatis的留言本 基于mybatis的留言本 基于mybatis的留言本 基于mybatis的留言本

    基于Mybatis的Java分页插件设计源码

    该项目为基于Mybatis构建的Java分页插件设计源码,包含242个文件,包括159个Java源文件、49个XML配置文件、12个Markdown文档、9个SQL脚本、3个YAML配置文件、3个PNG图片文件、1个EditorConfig文件、1个Git忽略文件、...

    Java Persistence with MyBatis 3

    MyBatis是一个基于Java的持久层框架,它解决了传统JDBC中的繁琐代码问题,允许开发者编写自定义的SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过XML或注解进行配置...

    基于mybatis-generate 的Oracle数据库的分页生成插件

    mybatis 分页 mybatis-...大家知道mybatis自动生成代码是没有分页功能的 我在网上找了很久 有很多内容 但正真可以使用的少之又少 本人整合了网上的资源 整理了基于Oracle数据库的mybatis插件 经测试可以完美运行。。

    SpringBoot+Mybatis+Druid+PageHelper实现多数据源并分页方法

    Mybatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,通过XML或注解方式配置映射关系,提供灵活的SQL查询操作。在SpringBoot中整合Mybatis,主要是通过配置文件设置数据源和Mapper扫描路径,以及引入...

    java分页工具类,以及基于Struts,Spring,mybatis,jsp中分页的调用及实现

    ### Java分页工具类及其在Struts、Spring、MyBatis和JSP中的应用 #### 一、Java分页概述 在开发Web应用程序时,为了提高用户体验并减轻服务器压力,通常会采用分页技术来展示大量的数据记录。本文将详细介绍一个...

    java开发之mybatis实战教程.zip

    "十SqlSessionDaoSupport的使用.txt"可能涉及MyBatis-Spring的一个辅助类SqlSessionDaoSupport,它为基于MyBatis的DAO提供了一个基础抽象,简化了与SqlSession的交互。 "九mybatis 代码生成工具的使用.txt"章节介绍...

    MyBatis分页

    3. **基于第三方插件的分页**:如MyBatis-Plus,它扩展了MyBatis的功能,提供了更简便的分页API,可以避免手动编写分页SQL。 **三、MyBatis分页实战** 1. **自定义Page对象**:创建一个Page对象,包含当前页数、每...

    基于MyBatis Plus的代码生成器.zip

    基于MyBatis Plus的代码生成器 项目简介 本项目是一个基于MyBatis Plus的代码生成器,旨在通过MyBatis Generator插件自动生成基于MyBatis Plus的DAO层代码(包括entity、mapper)和服务层代码。该生成器增强了...

    mybatis-plus增删改查分页

    Mybatis-Plus是一个基于Mybatis框架的扩展工具,它在Mybatis的基础上简化了开发过程,提供了更为便捷的数据操作API。这个入门教程旨在帮助初学者快速理解并掌握如何使用Mybatis-Plus进行数据库的增删改查(CRUD)...

    mybatis 分页自己写的一个分页

    MyBatis作为一款轻量级的Java持久层框架,它允许开发者自由地编写SQL语句,同时也支持自定义分页策略。 在传统的物理分页中,我们需要考虑如何有效地获取数据库中特定范围的数据,避免一次性加载大量数据导致内存...

    基于Java的Mybatis通用分页插件设计源码

    该项目为Java语言开发的Mybatis通用分页插件,包含137个文件,其中Java源文件84个、XML配置文件35个、SQL文件7个,并附带少量Markdown、properties和LICENSE文件。

    基于Mybatis的分页插件工具设计源码

    本源码为基于Mybatis的分页插件工具设计,包含38个Java文件、5个XML文件等,共48个文件。该项目旨在为Mybatis用户提供一个通用、高效的分页插件解决方案,支持12种数据库,通过最少的代码完成分页数据读取,适用于...

    DWZ+JAVA+Mybatis+SpirngMVC

    【标题】"DWZ+JAVA+Mybatis+SpirngMVC"揭示了这是一个基于这些技术构建的Web应用程序项目。DWZ全称为“Dynamic Web Zone”,是一个前端JavaScript框架,主要用于快速开发响应式和交互式的Web应用。Java是后端的主要...

    spring+mybatis实现了物理分页

    本项目是基于Spring和MyBatis框架实现的物理分页,让我们来深入探讨这个主题。 首先,Spring是一个开源的Java应用程序框架,它提供了一种依赖注入(Dependency Injection,DI)的方式来管理对象,使得代码更加模块...

    基于Java的Mybatis通用Mapper插件.zip

    Mybatis通用Mapper插件是一个基于Mybatis的增强工具,旨在简化数据库操作,提高开发效率。它通过提供通用的CRUD操作接口,减少了手动编写SQL语句的工作量,同时保留了Mybatis的原生特性。 主要功能模块 代码生成...

    springmvc+mybatis+分页查询

    在本项目中,我们主要探讨的是如何利用Spring MVC和MyBatis两大流行框架构建一个具有分页查询功能的Web应用。Spring MVC作为控制层,负责处理HTTP...理解并掌握这些知识点,对于开发基于Java的Web应用是非常重要的。

    mybatis分页完整的项目

    【标题】"mybatis分页完整的项目"是一个涵盖了MyBatis分页功能的完整Java Web项目,旨在帮助开发者理解和实现MyBatis在实际应用中的分页处理。该项目结合了Spring和MyBatis两大流行框架,提供了从数据库查询数据并...

    (源码)基于MyBatis的家电管理系统.zip

    # 基于MyBatis的家电管理系统 ## 项目简介 本项目是一个基于MyBatis框架的家电管理系统,旨在提供对家电信息的增删改查功能。系统通过MyBatis与MySQL数据库进行交互,实现了对家电、订单和用户信息的管理。 ## ...

    mybatis分页插件源码

    此时,可以考虑使用其他的分页策略,如游标分页或基于主键的分页。 8. **源码分析** 分析源码可以帮助我们理解分页插件的内部实现机制,包括如何解析SQL、如何插入分页条件、如何处理不同数据库的差异等。这有助于...

Global site tag (gtag.js) - Google Analytics