Hibernate中的分页(从jsp页面到Action以及后台的HQL)

42 篇文章 0 订阅
5 篇文章 0 订阅

话不多说了,直接上源码:

<SCRIPT type="text/javascript">
			function frontPageCheck()
			{
				if(${page > 1})
				{
					return true;
				}
				return false;
			}
			
			function backPageCheck()
			{
				if(${page < allPage})
				{
					return true;
				}			
				return false;
			}
		</SCRIPT>

以上这段代码是对分页参数所做的js验证,防止出现负页数或者不存在的页数!具体参数的意思请参见Action对各个参数的定义(下面会给出)

<div class="pager">
				<center>
					总共有${allPage}页, 当前是第${page}页
					<a href="${basePath}findAdmin?page=1"><font size="2"
						color="blue">首页</font> </a>
					<a href="${basePath}findAdmin?page=${page-1}"
						οnclick="return frontPageCheck();"><font size="2" color="red">上一页</font>
					</a>
					<a href="${basePath}findAdmin?page=${page+1}"
						οnclick="return backPageCheck();"><font size="2" color="red">下一页</font>
					</a>
					<a href="${basePath}findAdmin?page=${allPage}"><font size="2"
						color="blue">末页</font> </a>
				</center>
			</div>
以上这段代码是对超链接中连接参数的设置,同理具体参数含义请参见下面的struts.xml配置文件和Action中定义


public class AdminAction {
	private AdminService adminService;
	……
	/** 总共有多少页 */
	private int allPage;
	/** 页面大小 */
	private int pageSize = 3;
	/** 记录总数 */
	private int allRows;
	/** 当前页面数, 默认为1 */
	private int page = 1;
	/** 第一条记录的索引 */
	private int offset;
	……
	/**
	 * 分页查询Admin
	 * 
	 * @return 查询成功返回success,否则返回error
	 * @throws Exception
	 */
	public String findAdmin() throws Exception {
		allRows = adminService.findRows();
		offset = (page - 1) * pageSize;
		if (allRows % pageSize == 0) {
			allPage = allRows / pageSize;
		} else {
			allPage = allRows / pageSize + 1;
		}
		admins = adminService.getListForPage(offset, pageSize);
		if (admins != null) {
			return ActionSupport.SUCCESS;
		}
		return ActionSupport.ERROR;
	}
}



以上这段是对Action的定义,相信到这里大家有点明白了吧!

为了一看究竟,还是再来看看adminService里面是怎么写的吧

	public int findRows() {
		return adminDAO
				.findRows("select count(*) from Admin a group by a.adminNum");
	}
	public List<Admin> getListForPage(int offset, int pageSize) {
		return adminDAO.getListForPage("from Admin a order by a.adminNum asc",
				offset, pageSize);
	}



继续看看adminDAO中的写法:

	public List<Admin> getListForPage(final String hql, final int offset,
			final int lengh) {
		log.debug("finding ListForPage");
		try {
			List list = getHibernateTemplate().executeFind(
					new HibernateCallback() {
						public Object doInHibernate(Session session)
								throws HibernateException, SQLException {
							List list2 = session.createQuery(hql)
									.setFirstResult(offset)
									.setMaxResults(lengh).list();
							return list2;
						}
					});
			return list;
		} catch (RuntimeException re) {
			log.error("find ListForPage failed", re);
			throw re;
		}
	}

这一步比较重要,因为不经常用到

	public int findRows(String hql) {
		return getHibernateTemplate().find(hql).size();
	}



好了,现在就剩下struts.xml文件没有说明了,我觉得还需要说明一下:

<!--有关管理员操作的所有Action	-->
<package name="zyc_admin" extends="struts-default" namespace="/admin">
	……
	<!-- 查询管理员 -->
	<action name="findAdmin" class="edu.nwsuaf.information.action.AdminAction" method="findAdmin">
		<result name="success">/admin/indexAdmin.jsp</result>
		<result name="error">/error.jsp</result>
	</action>
	……
</package>
那么最初的链接呢?

<a href="<s:url namespace='/admin' action='findAdmin?page=1'></s:url>" target="main">管理员管理</a>
试试吧,是不是比较容易的?祝你好运!



  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值