SSH hibernate 分页的几种实现方式

news/2024/7/8 6:24:36

转载请注明出处~!!

第一种:

DetachedCriteria  Criteria 形式

@SuppressWarnings({ "unchecked", "rawtypes" })
	public PageModel getPageModel(final PageModel pageModel, final DetachedCriteria _criteria, Class entityType) throws DataAccessException{
		pageModel.initCriteria(_criteria, entityType);
		
		HibernateCallback<Integer> callback0 = new HibernateCallback<Integer>() {
			public Integer doInHibernate(Session session) throws HibernateException, SQLException {
				Criteria criteria = _criteria.getExecutableCriteria(session);
				criteria.setProjection(Projections.rowCount());
				criteria.setResultTransformer(CriteriaSpecification.PROJECTION);
				Number obj = (Number)criteria.uniqueResult();
				return obj==null ? 0 : obj.intValue();
			}
		};
		final int totalCount = getHibernateTemplate().execute(callback0);
		pageModel.setTotalCount(totalCount);
		if(totalCount>0){
			HibernateCallback<List<TEntity>> callback1 = new HibernateCallback<List<TEntity>>() {
				public List<TEntity> doInHibernate(Session session) throws HibernateException, SQLException {
					Criteria criteria = _criteria.getExecutableCriteria(session);
					criteria.setProjection(null);
					criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
					if(totalCount == 0) return ListUtils.EMPTY_LIST;
					if(pageModel.getPageSize()>0){
						int firstResult = (pageModel.getCurrentPage()-1) * pageModel.getPageSize();
						int maxResult = pageModel.getPageSize();
						if ((firstResult + maxResult) > totalCount) {
							maxResult = totalCount - firstResult;
						}
						criteria.setFirstResult(firstResult);
						criteria.setMaxResults(maxResult);
					}
					List<Order> olist = pageModel.getOrderList();
					if (olist!=null) {
						for (Order o : olist) {
							criteria.addOrder(o);
						}
					}
					return criteria.list();
				}
			};
			pageModel.setResult(getHibernateTemplate().execute(callback1));
		}else{
			pageModel.setResult(Collections.EMPTY_LIST);
		}
		return pageModel;
	}



第二种:

SQL

Hibernate
形式

public PageModel getPagesList(final PageModel pageModel,final DetachedCriteria _criteria, Class entityType,final int totalCount,final KnowledgeType knowledgeType,final String andQuery) {
		pageModel.initCriteria(_criteria, entityType);
		pageModel.setTotalCount(totalCount);
		if(totalCount>0){
			List list = getHibernateTemplate().executeFind(new HibernateCallback() {
				public Object doInHibernate(Session session)
						throws HibernateException, SQLException {
					int firstResult = (pageModel.getCurrentPage()-1) * pageModel.getPageSize();
					int maxResult = pageModel.getPageSize();
					if ((firstResult + maxResult) > totalCount) {
						maxResult = totalCount - firstResult;
					}
					String sql = " SELECT * FROM lc_knowledge_manager AS k "+
								 " WHERE knowledgeType_id "+
								 " IN "+
								 " (SELECT id FROM lc_knowledge_type WHERE topParentName="+
								 " (SELECT topParentName FROM lc_knowledge_type WHERE typeName='" +knowledgeType.getTypeName()+ "' ORDER BY id LIMIT 0,1) AND cateCode LIKE '%" +knowledgeType.getCateCode()+ "%')"+ 
							     andQuery +
								 " ORDER BY id DESC";
					SQLQuery q = session.createSQLQuery(sql);
					q.setCacheable(false);
					return q.addEntity(KnowledgeManager.class)
							.setFirstResult(firstResult)
							.setMaxResults(maxResult)
							.list();
				}

			});
			pageModel.setResult(list);
		}else{
			pageModel.setResult(Collections.EMPTY_LIST);
		}
		return pageModel;
	}


第三种:

HQL

Hibernate
形式


	public PageModel nListArtcs(final int pageNo, final int pageSize,
			final String obj, final String order) {
		List list = getHibernateTemplate().executeFind(new HibernateCallback() {

			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				return session
						.createQuery("from " + obj + " order by id " + order)
						.setFirstResult((pageNo - 1) * pageSize)
						.setMaxResults(pageSize).list();
			}

		});
		return new PageModel(list, this.getListAmount(obj), pageSize, pageNo);
	}




http://www.niftyadmin.cn/n/4582762.html

相关文章

textarea文本域自适应高度

-----------------html <div><textarea autoHeight"true">textarea</textarea></div> 复制代码-----------------js $.fn.autoHeight function(){function autoHeight(elem){elem.style.height auto;elem.scrollTop 0; //防抖动elem.styl…

优秀Android博客大全,整理了国内外大神博客/Github地址,是学习Android进阶的首选[转]

[转]国内外优秀Android博客大全&#xff0c;覆盖了国内外大神博客地址&#xff0c;Github地址&#xff0c;是学习Android进阶的首选国内&#xff1a; 昵称Github博客介绍邓凡平 http://blog.csdn.net/innost阿拉神农魏祝林 http://blog.csdn.net/android_tutor Trineahttps://…

Bitmap 图片格式并用 C++ 读写 Bitmap

转自 Bitmap 图片格式并用 C 读写 Bitmap 1、Bitmap 图片格式 每部分的具体内容就不展开了。要说的有两点&#xff1a; &#xff08;1&#xff09;调色板不是必须的&#xff0c;可有可无&#xff0c;有没有调色板可以通过位图文件头的 bfOffBits 是否等于位图文件头加上位图信息…

Android Studio多渠道打包和代码混淆教程 【亲测可用】

from : http://www.tuicool.com/articles/mQZNvey 时间 2015-11-18 10:13:14 极客头条原文 http://coolshell.info/blog/2015/03/android-studio-prefrence.html主题 Gradle Android Studio什么是Gradle Gradle是一种依赖管理工具&#xff0c;基于Groovy语言&#xff0c;面向J…

UIView和Masonry实现动画效果

Masonry 实现动画效果如下&#xff1a; //button点击方法 - (void)clickedButton {static BOOL isMove; //默认是NOWeakify(weakSelf);//告诉self.view约束需要更新[weakSelf.view setNeedsUpdateConstraints];//调用此方法告诉self.view检测是否需要更新约束&#xff0c;若需要…

android 底层日志 开发框架 崩溃后进行记录 LogReport

类别&#xff1a; 其他 (Others)打分&#xff1a; ★★★★★更新&#xff1a; 2016-07-24 22:05大小&#xff1a; 902 kb开发环境&#xff1a; Android Studio浏览&#xff1a; 205 次下载&#xff1a; 10 次项目地址&#xff1a; https://github.com/wenmingvs/LogReport 介绍…

Layui基本功能(增删改查)

话不多说&#xff0c;根据我前面的博客我们直接进行操作。记住以下的文件放置&#xff0c;防止操作出不来. 这是我们要完成的界面及功能 后台功能实现 数据查看 我们在userDao方法里面进行增删改查的方法我们在userAction进行方法的编写R工具类的介绍 查询 userDao方法 因为我…

CentOS6.8 x86_64bit shell脚本实现模拟nginx服务启动与关闭

shell脚本模拟nginx服务启动与关闭注意&#xff1a; 3个斜杠///后面表示在这表示对当前语句的解释&#xff0c;实际脚本中必须删除 #!/bin/bash///定义哪种脚本语言解释下面的语句[ -f /etc/init.d/functions ]&& . /etc/init.d/functions ///判断并加载系统函数nginx&…