`

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

阅读更多

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

 主要是当前的页数,因为是第一次嘛,肯定是从第一页开始的。查询出来的页面我用的是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+serlvet分页查询代码

    【标题】"jdbc+serlvet分页查询代码"涉及的知识点主要集中在Java数据库连接(JDBC)和Servlet两个核心技术上,它们是Web应用程序中处理数据和交互的关键组件。 **JDBC(Java Database Connectivity)** JDBC是Java...

    c# 自己写的分页代码

    总的来说,"c# 自己写的分页代码"项目涵盖了C#后端处理分页逻辑、数据库查询、前端展示和用户体验等多个方面,是学习和实践C#分页功能的好素材。通过对这个项目的分析和学习,开发者可以更好地理解和掌握C#环境下...

    Android开发之数据库的分页查询代码

    三、Android SQLite分页查询步骤 1. **创建数据库和表** 首先,你需要创建一个SQLiteOpenHelper子类,用于管理数据库的创建和版本升级。在onCreate()方法中,编写SQL语句创建表,例如: ```java @Override public ...

    JSP_分页查询关键代码

    分页查询主要涉及以下几个步骤: 1. **建立数据库连接**:使用JDBC(Java Database Connectivity)来连接数据库。 2. **编写SQL语句**:根据当前页码和每页显示的数据量来动态生成SQL语句。 3. **执行SQL语句**:...

    java多线程分页查询

    针对数据量较大的场景,本文介绍的多线程分页查询方案主要包含以下几个步骤: - **步骤1:计算总记录数**。首先通过执行一个统计查询语句获取总的记录数,为后续的分页提供依据。 - **步骤2:设置页面信息**。根据...

    asp论坛分页数字分页代码

    通过学习和理解这个代码,开发者可以快速地在自己的项目中应用分页功能,提高网页的性能和用户体验。如果你对ASP编程或分页技术不熟悉,建议仔细阅读提供的说明文档,并尝试运行和调试代码以加深理解。

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    提供的代码片段中展示了`KindEntityDao`接口的部分定义,其中包括了获取单个实体、保存、更新、删除以及分页查询等功能。 3. **DAO实现** `KindEntityDaoHibernate`类实现了`KindEntityDao`接口,并使用Hibernate...

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

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

    完美解决MybatisPlus插件分页查询不起作用总是查询全部数据问题

    问题在于,当你在使用MybatisPlus进行分页查询时,如果未正确配置PaginationInterceptor,分页参数将无法生效,你会观察到所有的数据都被查询出来。要解决这个问题,你需要在你的项目配置中添加...

    MVC分页 使用 教程与源代码

    然后,在控制器中,你可以使用`PagedListPager`辅助方法创建分页链接,同时使用`ToPagedList`方法将查询结果转换为`PagedList`对象。以下是一个简单的例子: ```csharp public ActionResult Index(int? page) { ...

    安卓listview 分页查询代码

    通过以上步骤,我们可以实现基于ListView和ArrayAdapter的分页查询。这不仅提高了应用性能,还能提供良好的用户体验。在实际项目中,还可以根据需求进一步优化,例如集成Paging Library,实现更智能的分页加载策略。

    word文档分页步骤和代码

    ### Word文档分页步骤与VBA代码详解 #### 一、背景介绍 在处理大量Word文档时,常常需要将一个大型文档分割成多个较小的文档,以便于管理和发送。Word本身提供了一些工具来帮助实现这一目标,而通过使用VBA(Visual...

    servlet实现分页查询

    在分页查询中,我们通常需要以下几个步骤: 1. **请求处理**:当用户点击页面链接或提交表单时,Servlet捕获HTTP请求,通常包含页码和每页显示条数等参数。 2. **计算页数**:Servlet根据数据库中的总记录数和每页...

    PHP的分页源代码 分页代码

    ### PHP分页功能详解与实现 ...通过以上分析,我们可以看到PHP分页技术的核心在于合理地控制查询和展示的数据量,同时还需要考虑用户体验和代码的安全性。希望本篇文章能够帮助大家更好地理解和运用PHP分页技术。

    SSH分页查询方法

    在IT行业中,分页查询是一种常见的数据管理策略,特别是在处理大量数据时,它能有效提高网页或应用的加载速度和用户体验。"SSH分页查询方法"是指在使用Struts2、Hibernate和Spring三大Java开发框架集成开发时实现的...

    js分页代码,分页代码

    - 虽然示例代码中没有完整展示分页逻辑,但从变量命名和注释中可以看出,主要涉及到的内容包括:确定每页显示多少内容、如何根据当前页数显示内容、如何生成分页导航等。 ### 五、扩展知识点 除了基本的分页功能...

    仿google分页完整代码

    2. **SQL查询**:根据分页需求,编写SQL查询语句。通常,查询会包含`LIMIT`和`OFFSET`子句,`LIMIT`用于指定每页显示的数据数量,`OFFSET`则根据当前页数计算出跳过多少条记录。例如: ```sql SELECT * FROM table...

    oracle分页查询并返回总记录数据存储过程

    ### Oracle 分页查询并返回总记录数据存储过程 在数据库应用开发中,为了提高用户体验以及减少服务器负担,分页查询成为了一种常见的技术手段。Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种...

    mybatis 分页自己写的一个分页

    "mybatis 分页自己写的一个分页"这个项目正是针对这一需求,提供了一种自定义的分页解决方案。MyBatis作为一款轻量级的Java持久层框架,它允许开发者自由地编写SQL语句,同时也支持自定义分页策略。 在传统的物理...

    大数据量多线程执行分页查询

    在实际应用中,实现大数据量多线程分页查询的过程可能包括以下几个步骤: 1. **设计数据库表结构**:根据需求创建合适的表结构,合理利用索引以优化查询性能。 2. **实现分页查询**:使用SQL的`LIMIT`(MySQL)或`...

Global site tag (gtag.js) - Google Analytics