`
taiwei.peng
  • 浏览: 233945 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 开发 oracle分页通用方法

    博客分类:
  • java
阅读更多
package com.richsum.hyoa.dao.impl;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.SQLQuery;
import org.hibernate.Query;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projections;
import org.hibernate.transform.Transformers;
import org.hibernate.type.Type;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.richsum.hyoa.dao.GenericEntityDao;
import com.richsum.hyoa.dto.PageModel;
import com.richsum.hyoa.model.BaseModel;
import com.richsum.hyoa.model.OfficeDispatch;
import com.richsum.hyoa.web.PagerContext;

/**
* Abstract base class for a DAO
*
* @author Leo
*/
public abstract class GenericEntityDaoImpl<T extends BaseModel> extends
HibernateDaoSupport implements GenericEntityDao<T> {

/** the logger */
private static final Log LOG = LogFactory
.getLog(GenericEntityDaoImpl.class);

/**
* The class of the entity of this DAO.
*/
private Class<T> entityClass;

/**
* Construct this DAO for the supplied model class.
*
* @param entityClass
*            The model class that is persisted.
*/
public GenericEntityDaoImpl(final Class<T> entityClass) {
this.entityClass = entityClass;
}

public int countAll() {
Criteria criteria = getSession().createCriteria(entityClass);
criteria.setProjection(Projections.rowCount());
return (Integer) criteria.uniqueResult();
}

@SuppressWarnings("unchecked")
public List<T> listAll() {
LOG.debug("Get all" + entityClass.getSimpleName());
List<T> values = (List<T>) getHibernateTemplate().findByCriteria(
DetachedCriteria.forClass(entityClass));
return values;
}

@SuppressWarnings("unchecked")
public T get(Long id) {
LOG.debug("Get all" + entityClass.getSimpleName() + " with id " + id);
return (T) getHibernateTemplate().get(entityClass, id.longValue());
}

public <E> List<E> findByCriteria(String sqlStmt, Class<E> entityClass,
List args, Map map) {
SQLQuery query = this.getSession().createSQLQuery(sqlStmt);
query.setResultTransformer(Transformers.aliasToBean(entityClass));
if (args != null) {
int size = args.size();
for (int i = 0; i < size; i++) {
query.setParameter(i, args.get(i));
}
}
if (map != null) {
Iterator keyIt = map.keySet().iterator();
while (keyIt.hasNext()) {
Object key = keyIt.next();
Object val = map.get(key);
query.addScalar((String) key, (Type) val);
}
}
return (List<E>) query.list();
}

public <E> List<E> findByCriteria(String sqlStmt, Class<E> entityClass,
List args) {
return this.findByCriteria(sqlStmt, entityClass, args, null);
}

public List findByCriteriaByHQL(String sqlStmt, List args) {
Query query = this.getSession().createQuery(sqlStmt);
if (args != null) {
int size = args.size();
for (int i = 0; i < size; i++) {
query.setParameter(i, args.get(i));
}
}
return query.list();
}

public void save(T item) {
LOG.debug("save new item");
item.prePersist();
getHibernateTemplate().saveOrUpdate(item);
}

public void update(T item) {
LOG.debug("update item");
item.prePersist();
// getHibernateTemplate().merge(item);
getHibernateTemplate().update(item);
}

public void delete(T item) {
LOG.debug("update item");
getHibernateTemplate().delete(item);
}

/**
* {@inheritDoc}
*/
public void evictFromHibernate(T item) {
getHibernateTemplate().flush();
getHibernateTemplate().evict(item);
}

/**
* 分页查询
* @param jpql hql 语句
* @param page 当前页
* @param size 每页的记录数
* @return
*/
public List pageSearch(String hql, Integer pageNo, Integer pageSize) {
return this.pageSearchCriteriaByHQL(hql,null,pageNo,pageSize);
}

/**
* List条件查询
*
* @param sql
*            hql 语句
* @param argsList
*            参数集合
* @param pageNo
*            当前页
* @param pageSize
*            每页的记录数
* @return
*/
public List pageSearchCriteriaByHQL(String hql, List argsList,
Integer pageNo, Integer pageSize) {
try {
if (pageSize == 0) {
pageSize = 15;
}
Query query = this.getSession().createQuery(hql)
.setFirstResult((pageNo - 1) * pageSize)
.setMaxResults(pageSize);
if (null != argsList && argsList.size() > 0) {
int size = argsList.size();
for (int i = 0; i < size; i++) {
query.setParameter(i, argsList.get(i));
}
}
return query.list();
} catch (Exception e) {
System.out.println("List条件查询异常。");
e.printStackTrace();
}
return null;
}

/**
* 计算总条数
* @param hql 查询语句
* @return 总页数
*/
public int countPageSize(String hql, List paraList) {
int index = hql.indexOf("from");
hql = "select count(*) " + hql.substring(index);
return ((Number) this.findUniqueResult(hql, paraList)).intValue();
}

@Override
public PageModel<T> queryPageByHQL(String hql, List argsList) {
PageModel<T> pm = new PageModel<T>();
List list = pageSearchCriteriaByHQL(hql,argsList,PagerContext.getPageNo(),PagerContext.getPageSize());
pm.setDatas(list);
pm.setRecordCount(this.countPageSize(hql, argsList));
pm.setPageNo(PagerContext.getPageNo());
pm.setPageSize(PagerContext.getPageSize());
return pm;
}

@Override
public int queryCountPageSize(String hql){
int index = hql.indexOf("from");
hql = "select count(*) " + hql.substring(index);
Query query = this.getSession().createQuery(hql);
return ((Number) query.uniqueResult()).intValue();
}
@Override
public PageModel<T> queryCountPageHql(String hql){
PageModel<T> pm = new PageModel<T>();
pm.setDatas( pageSearch(hql, PagerContext.getPageNo(),PagerContext.getPageSize()));
pm.setRecordCount(queryCountPageSize(hql));
pm.setPageNo(PagerContext.getPageNo());
pm.setPageSize(PagerContext.getPageSize());
return pm;

}

@Override
public Object findUniqueResult(String hql, List paraList) {
Query query = this.getSession().createQuery(hql);
if (paraList != null) {
for (int i = 0; i < paraList.size(); i++) {
query.setParameter(i, paraList.get(i));
}
}
return query.uniqueResult();
}

@Override
public int excuteUpdateBySql(String sql, List list) {
SQLQuery query = this.getSession().createSQLQuery(sql);
if(list != null){
for(int i=0; i < list.size(); i++){
query.setParameter(i, list.get(i));
}
}
return query.executeUpdate();
}

@Override
public Object findUniqueResultBySQL(String sql, List list) {
SQLQuery query = this.getSession().createSQLQuery(sql);
if(list != null){
for(int i=0; i < list.size(); i++){
query.setParameter(i, list.get(i));
}
}
return query.uniqueResult();
}

}
分享到:
评论

相关推荐

    java web项目分页通用实现

    总结,Java Web项目中的分页通用实现涉及到数据库查询、参数传递、前后端交互等多个环节。通过封装分页组件,我们可以将这些复杂逻辑模块化,便于在不同的项目中复用,从而提升开发质量和效率。这个DEMO正是为了帮助...

    java通用分页代码实例.rar

    Java 分页技术是Java开发中常见的一种数据处理方式,尤其在大数据量的Web应用中,为了提高用户体验并减轻服务器压力,通常需要实现分页显示功能。这个"java通用分页代码实例"提供了一种适用于任意数据库的解决方案,...

    SSH+ORACLE通用分页

    总的来说,"SSH+Oracle通用分页"是Java Web开发中常见的需求,它涉及到SSH框架的集成使用和Oracle数据库的高效查询策略。理解并熟练掌握这些知识,对于开发高性能、用户体验良好的Web应用至关重要。在实际项目中,还...

    Java 通用分页

    在Java开发中,分页是数据管理中一个非常常见的需求,尤其在大数据量的Web应用中,为了提高用户体验,我们通常需要将数据分批次展示,而不是一次性加载所有数据。这不仅可以减少服务器的压力,还能使用户界面更加...

    java中mysql和oracle数据库通用分页功能实现完整Demo

    开发环境:SpringBoot+SSM,同样适合SpringBoot,具备一定Maven项目基础初学者,详细说明地址http://blog.csdn.net/fjekin/article/details/75541573

    java web Pager通用分页组件(源码)

    超级强悍的java web通用分页组件,只要简单的一条sql语句就可以轻松的实现分页,目前对oracle,SQL Server2005,SQL server200,mysql都做了实现,程序通过接口来封装,你可以实现对其他数据库的分页。里面有调用例子...

    完美整合(通用分页)SSH+Oracle (需要自己加入jar包,只是源码)

    【SSH+Oracle 整合详解】 SSH(Struts2、Spring、Hibernate)是Java开发中常用的三大开源框架,它们各自负责Web应用的不同层面:...理解并掌握这些知识点,将有助于你理解和使用这个整合的SSH+Oracle分页解决方案。

    java通用分页源码

    Java通用分页是Java开发中常见的一种功能,用于在大量数据中实现高效的浏览和查询。在Web应用中,尤其是在数据库操作中,分页是必不可少的,它可以提高用户体验,避免一次性加载过多数据导致页面响应变慢。这个源码...

    通用java分页后端服务代码

    在Java开发中,分页是常见的功能,尤其在构建后台服务时,为了处理大量数据并提高用户体验,分页显得尤为重要。本资源提供了通用的Java分页后端服务代码,可以帮助开发者快速实现数据的分页查询功能。以下是相关知识...

    jsp-web开发通用分页标签

    本教程将详细讲解如何使用JSP(JavaServer Pages)技术来实现一个通用的分页标签,以便在各种项目中复用。 首先,JSP是Java平台上的动态网页技术,它允许开发人员在HTML或者XML文档中嵌入Java代码。在分页场景下,...

    TERADATA、ORACLE数据库分页

    3. `BasicService.java`: 基础服务类,可能包含了数据库操作的通用方法,如CRUD操作,但不包括具体的分页实现。 4. `Action.java.txt`: 这看起来像是一个ACTION类,通常在Java Web应用中用于处理用户请求,它可能...

    Java_Mybatis通用分页插件.zip

    总的来说,Java Mybatis通用分页插件PageHelper极大地简化了Java开发人员在Mybatis中的分页操作,提高了开发效率,降低了出错的可能性,是Mybatis项目中的得力助手。通过阅读“说明.txt”和解压后的“Mybatis-...

    Mybatis通用分页插件

    Mybatis通用分页插件是Java开发中广泛使用的ORM(对象关系映射)框架扩展,主要针对Mybatis进行优化,提供了高效便捷的分页功能。这个插件的目的是简化在数据库查询时的分页操作,使得开发者能够更专注于业务逻辑,...

    对分页进行了封装,PageUtil.java工具类

    综上所述,这个项目利用`PageUtil.java`工具类对分页进行了封装,简化了分页查询的过程,提高了开发效率。同时,通过`GroupAction`、`GroupService`、`GroupDao`以及`GroupMapper.xml`的协同工作,实现了从用户请求...

    struts2+spring+ibatis+oracle+分页搜索+上传附件实例

    Struts2、Spring、iBatis以及Oracle是Java Web开发中的四大核心组件,它们共同构建了一个强大且灵活的后端架构。在这个实例中,我们将会深入探讨这些技术如何协同工作,实现分页搜索功能和上传附件操作。 1. **...

    一个关于基于ssm,mysql(也含oracle方式)实现的分页查询.rar

    总的来说,这个资源包提供了一个SSM环境下,结合MySQL和Oracle数据库进行分页查询的实例,对于初学者理解SSM框架与数据库的交互,以及掌握分页查询的实现方法,是非常有价值的参考资料。在实际项目中,合理利用分页...

    jsp通用分页

    【jsp通用分页】是指在Java Web开发中,利用JSP技术实现数据库查询结果的分页展示。在处理大量数据时,为了提高用户体验和减轻服务器压力,通常会采用分页的方式来展示数据。JDBC(Java Database Connectivity)作为...

    mysql,oracle,sqlserver分页

    - **通用分页查询格式**: - 每页显示`m`条数据,查询第`n`页的数据。 - **未排序的分页**: ```sql SELECT a.* FROM ( SELECT ROWNUM AS rowno, e.* FROM 表名 e WHERE ROWNUM * n ) a WHERE a.rowno &gt; (n...

    通用Mapper逆向工程代码-自动生成代码,支持mysql和oracle

    此外,通用Mapper还提供了批量更新、分页查询等高级功能,使得在实际开发中更加便捷。 通用Mapper与其他类似工具如MyBatis Generator相比,有以下优点: - **扩展性强**:通用Mapper提供了一系列的插件机制,可以...

Global site tag (gtag.js) - Google Analytics