`

自己写的分页查询的步骤代码

阅读更多

第一步:前台页面(核心代码)

 主要是当前的页数,因为是第一次嘛,肯定是从第一页开始的。查询出来的页面我用的是iframe方式呈现。其他地方的代码不用啰嗦,该怎么写怎么写。

<form name="advertiseForm" id="advertiseForm" action="modules/advertisement/AdvertiseManageAction.do?action=searchAdvertise" method="POST" target="advertiseList">
    <input type="hidden" name="currentPage" id="currentPage" value="1" />
<!-- 此处省略 -->
 <iframe style="padding-top: 0px;" name="advertiseList" id="advertiseList"
			src="" frameBorder="0" width="100%"
			onload="javascript:this.height=advertiseList.document.body.scrollHeight"
			scrolling="no"></iframe>

 

第二步:actionForm代码

 actionForm里面的字段名称和前台页面要保存一直,学过struts的同学应该明白自动填充的含义。

package com.feinar.b2c.holiday.advertise.form;

import org.apache.struts.action.ActionForm;

/**
 * 查询广告管理用到的formBean
 * @author Administrator
 *
 */
public class AdvertiseSearchForm extends ActionForm{
	public String advertiseName;//广告名称
	public int advertiseState;//广告状态
	public int advertiseType;//发布区域
	public String currentPage;//当前第几页
	public String getAdvertiseName() {
		return advertiseName;
	}

	public void setAdvertiseName(String advertiseName) {
		this.advertiseName = advertiseName;
	}

	public int getAdvertiseState() {
		return advertiseState;
	}

	public void setAdvertiseState(int advertiseState) {
		this.advertiseState = advertiseState;
	}

	public int getAdvertiseType() {
		return advertiseType;
	}

	public void setAdvertiseType(int advertiseType) {
		this.advertiseType = advertiseType;
	}

	public String getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(String currentPage) {
		this.currentPage = currentPage;
	}
}

 

第三步:action代码

 

/**
	 * 查询广告
	 * @param mapping
	 * @param actionForm
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ActionForward search(ActionMapping mapping, ActionForm actionForm,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		// TODO Auto-generated method stub
		AdvertiseSearchForm advertiseSearchForm = (AdvertiseSearchForm) actionForm;
		String action  = request.getParameter("action");
		int pageSize = 5;//默认每页显示的数量为10条
		System.out.println(action);
		List list = advertiseManageService.getAdvertiseList(advertiseSearchForm,pageSize);//获取对应的数据列表
		List list2 = advertiseManageService.getTotalCount(advertiseSearchForm,pageSize);//获取关于多少页,每页几条数据,一共多少页
		request.setAttribute("list", list);
		request.setAttribute("list2", list2);
		request.setAttribute("advertiseSearchForm", advertiseSearchForm);
		return mapping.findForward("list");
	}

 第四步:service业务逻辑层核心代码

/**
	 * 获取广告列表
	 */
	public List getAdvertiseList(AdvertiseSearchForm advertiseSearchForm,int pageSize)
			throws Exception {
		// TODO Auto-generated method stub
		List list = null;
		int currentPage = Integer.parseInt(advertiseSearchForm.getCurrentPage());
		int index = (currentPage-1)*pageSize;
		int end = currentPage*pageSize;
		try{
			String sql = getSql(advertiseSearchForm,2,index,end);
			list = advertiseManageDao.getAdvertiseList(sql);
		}catch (Exception e) {
			throw new Exception(e.getMessage().toString());
		}
		return list;
	}
	
	/**
	 * 得到查询的数据库sql语句
	 * @param advertiseSearchForm
	 * @param type
	 * @param index
	 * @param end
	 * @return
	 */
	public String getSql(AdvertiseSearchForm advertiseSearchForm,int type,int index,int end){
		String sqlwhere = " where 1=1 ";
		String sql = "";
		if(type==1){
			//获取评论总条数
			sql= "select count(*) from HOLIDAY_ADVERTISEMENT";
		}
		else if(type==2){
			//获取评论信息内容
			sql = "select * from (select ADVERTISEID,ADVERTISENAME,PIC,LINKURL,HOTELADDNUM,HOLIDAYADDNUM,HOLIDAYTYPEADDNUM,PUBLISHSTATE,rownum n " +
					"from HOLIDAY_ADVERTISEMENT ";
		}
		if(advertiseSearchForm.getAdvertiseName()!=null && !"".equals(advertiseSearchForm.getAdvertiseName().trim())){
			sqlwhere += " and ADVERTISENAME = '"+advertiseSearchForm.getAdvertiseName().trim()+"'";
		}
		if(advertiseSearchForm.getAdvertiseType()==1){
			sqlwhere += " and HOTELADDNUM is not null ";
		}
		if(advertiseSearchForm.getAdvertiseType()==2){
			sqlwhere += " and HOLIDAYADDNUM is not null ";
		}
		if(advertiseSearchForm.getAdvertiseType()==3){
			sqlwhere += " and HOLIDAYTYPEADDNUM is not null ";
		}
		if(advertiseSearchForm.getAdvertiseState()==0){
			sqlwhere += " and PUBLISHSTATE = 0 ";
		}
		if(advertiseSearchForm.getAdvertiseState()==1){
			sqlwhere += " and PUBLISHSTATE = 1 ";
		}
		if(advertiseSearchForm.getAdvertiseState()==2){
			sqlwhere += " and PUBLISHSTATE = 2 ";
		}
		if(type==2){
			sql += sqlwhere+" and rownum<="+end +" order by ADVERTISEID asc) where n>"+index;
		}else {
			sql += sqlwhere;
		}
		return sql;
	}
	
	/**
	 * 获取总共的条数,和页数,保存到一个list里面
	 */
	public List getTotalCount(AdvertiseSearchForm advertiseSearchForm,int pageSize) throws Exception {
		// TODO Auto-generated method stub
		int count = 0;
		int currentPage = Integer.parseInt(advertiseSearchForm.getCurrentPage());
		int pageCount = 0;//总共的页数
		List list = new ArrayList();
		try{
			String sql = getSql(advertiseSearchForm,1,0,0);
			count = advertiseManageDao.getTotalCount(sql);
			if (count % pageSize == 0) {
				pageCount = count / pageSize;
			} else {
				pageCount = count / pageSize + 1;
			}
			list.add(count);
			list.add(pageCount);
			list.add(advertiseSearchForm.getCurrentPage());
		}catch (Exception e) {
			throw new Exception(e.getMessage().toString());
		}
		return list;
	}

 

第五步:dao层组件代码

/**
	 * 获取某广告信息列表
	 */
	public List getAdvertiseList(String sql) throws Exception {
		// TODO Auto-generated method stub
		List list = new ArrayList();
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		try{
			connection = this.getJdbcTemplate().getDataSource().getConnection();
			preparedStatement = connection.prepareStatement(sql);
			resultSet = preparedStatement.executeQuery();
			while(resultSet.next()){
				Advertisement advertisement = new Advertisement();
				advertisement.setAdvertiseid(resultSet.getLong("ADVERTISEID"));
				advertisement.setAdvertisename(resultSet.getString("ADVERTISENAME"));
				advertisement.setPic(resultSet.getBlob("PIC"));
				advertisement.setLinkurl(resultSet.getString("LINKURL"));
				advertisement.setHoteladdnum(resultSet.getLong("HOTELADDNUM"));
				advertisement.setHolidayaddnum(resultSet.getLong("HOLIDAYADDNUM"));
				advertisement.setHolidaytypeaddnum(resultSet.getLong("HOLIDAYTYPEADDNUM"));
				advertisement.setPublishstate(resultSet.getLong("PUBLISHSTATE"));
				list.add(advertisement);
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(resultSet!=null){
				resultSet.close();
			}
			if(preparedStatement!=null){
				preparedStatement.close();
			}
			if(connection!=null){
				connection.close();
			}
		}
		return list;
	}

	/**
	 * 获取满足要求的广告总记录数(用于查询分页)
	 */
	public int getTotalCount(String sql) throws Exception {
		// TODO Auto-generated method stub
		int totalCount = 0;
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		try{
			connection = this.getJdbcTemplate().getDataSource().getConnection();
			preparedStatement = connection.prepareStatement(sql);
			resultSet = preparedStatement.executeQuery();
			while(resultSet.next()){
				totalCount = resultSet.getInt(1);
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(resultSet!=null){
				resultSet.close();
			}
			if(preparedStatement!=null){
				preparedStatement.close();
			}
			if(connection!=null){
				connection.close();
			}
		}
		return totalCount;
	}

 

分享到:
评论

相关推荐

    简单的分页三步骤设计代码

    通过JDBC用java实现Oracle的数据库连接,并实现页面的分页设计

    MVC分页 使用 教程与源代码

    MVC做的教程与源代码 里面有MVC用于分页的实现(PagedList, GridViewExtensions等等类),以及相关控件的使用方法等。 方便您学习参考. 对应的版本是MVC Beta版

    struts2分页代码的示例

    在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种比较好的方法。下面是我用Struts2做的一个分页显示...

    word文档分页步骤和代码

    用word自带的工具将大word文件分页,批量制作小的word文件,将一个word文档分为若干个

    java代码实现分页

    实现分页功能是各个页面显示的内容数量一样

    一个JSP数据库分页实例代码.rar

    于大家分享一个基于JSP代码的数据库分页程序代码,帮助JSP初学者了解数据库的分页原理以及具体的代码实现步骤,这个代码比较早了,不过现在仍然有一定参考作用,本代码是一个完整的JSP分页演示文件,从数据库连接...

    Spring,Spring Data Jpa,freemarker,bootstrap实现的分页源代码

    Spring,Spring Data Jpa,freemarker,bootstrap实现的分页源代码

    MVC分页详解(包括整个流程步骤,代码与注解)

    1、首先写一个Model分页模型MvcPagerInfo.cs(可放入AppCode中) 2、在控制器公用方法中添加分页方法BaseController.cs 3、写一个一般处理程序Pager.ascx 4、分页模板 _Pager.cshtml(View/Shared中) 5、View视图以后...

    Struts2实现分页代码

    在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种比较好的方法。下面是我用Struts2做的一个分页显示...

    elasticsearch6 聚合查询普通分页demo

    聚合查询分页测试termsAgg.size(2147483647); //指定最大统计显示多少行步骤1:全量聚合,size设置为: 2147483647。 ES5.X/6.X版本设置为2147483647 ,它等于2^31-1,请看该地方代码

    Hibernate+Struts+Spring 实现的通用分页查询

    Hibernate+Struts+Spring 实现的通用分页查询,非常实用的。步骤和代码都有,很详细。

    servlet分页代码示例

    本文介绍了servlet分页代码实现,采用Oracle数据库,获取SCOTT用户EMP表中的数据,分页实现步骤看下面代码

    css如何实现数字分页效果代码及步骤

    最近看到很多的网站都是用了数字分页效果,至于它的好处太多了,举不胜举啊,下面简单介绍一下实现的步骤:使用浮动属性,以便让li元素水平排列...感兴趣的你可不要错过了哈,或许本文所提供的效果正是你一直寻找的

    gridview分页

    自己做网站时对gridview分页的总结,含gridview分页的具体代码及步骤。

    SSH分页(详细的代码过程)

    SSH分页步骤 七、 接着就是jsp页面了 ${msg }"&gt;首页 href="getConsultationAUser.do?index=prew&pageno=${page.currentPage -1}&msg=${msg }"&gt;上一页 ...

    基于Bootstrap仿淘宝分页控件实现代码

    主要介绍了基于Bootstrap仿淘宝分页控件实现代码,本文分步骤给大家介绍的非常详细,感兴趣的朋友参考下吧

    自己动手写操作系统(含源代码).part2

    我虽然已经有多年不写代码了,但看这本书的时候,让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统,让电脑听从自己的指令,对系统的每个部分都了如指掌。 黑客(hacker)实际是褒义词,维基百科的解释是...

    小贤PHP通用分页程序 v1.0

    我在一些PHP论坛上经常看到不少PHP初学者对于PHP分页很头痛,所以我就抽一点时间将我所写的网站中 的分页功能给分离出来给广大PHP初学者做为参考或者使用。 程序的演示效果您可以登录到淘宝网寻宝客...

    SSM代码生成工具/改进版Mybatis代码生成工具

    1.mapper文件:在原先生成的mapper文件中加入分页查询,条件查询,条件统计.并且自动生成oracle/mysql分页sql(仅支持) 2.dao: 自使用生成接口方法,若继承超类,则有超类抽象实现. 3.service:生成spring标准的service源码...

    JSP实现分页效果

    本文实例为大家分享了JSP实现分页的具体代码,供大家参考,具体内容如下 咱们在浏览网页的时候,当一个页面的数据不足以展示完全所有的内容,一般都涉及到分页,下一页的功能该怎么实现呢?首先我们来分析一下: ...

Global site tag (gtag.js) - Google Analytics