`
xjk2131650
  • 浏览: 56944 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

SSH中通用Dao的实现

阅读更多

package auh.dao;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/** 
* GeneralDaoImpl
* @author 可可 
* @param table 保存数据表名,进行操作前必须设置此属性
* @param Package 存放数据表的pojo的包,默认为"auh.model"
*/ 
public class GeneralDaoImpl extends HibernateDaoSupport implements GeneralDao {
private String table;
private String Package;

public GeneralDaoImpl(){
   this.Package="auh.model";
}
public String getTable() {
   return table;
}
public String getPackage() {
   return Package;
}
public void setPackage(String package1) {
   this.Package = package1;
}
public void setTable(String table) {
   this.table = table;
}
public Boolean isNullTable(){
   if(table==null)return true;
   else return false;
}
public List<Object> FindAllDesc() {
   return (List<Object>)getHibernateTemplate().find("from "+table+" a order by a.id desc");
}
public List<Object> FindAll() {
   return (List<Object>)getHibernateTemplate().find("from "+table);
}

public Object FindById(int id) {
   String sql="from "+table+" where id=?";
   List<Object> list=getHibernateTemplate().find(sql,id);
   if(list!=null)return list.get(0);
   else return null;
}
/** 
* 根据条件查找 
* @param query 查询的逻辑表达式,例如:name=?
* @param value 将替换query中的'?'
* @return List   
*/ 
public List<Object> FindWhere(String query, Object value) {
   if(query==null||value==null)query="from "+table;
   else query="from "+table+" where "+query;
   return (List<Object>)getHibernateTemplate().find(query,value);
}
/** 
* 根据条件查找 
* @param query 查询的逻辑表达式,例如:name=? and pass=? 
* @param values 将依次替换query中的所有'?'
* @return List   
*/
public List<Object> FindWhere(String query, Object[] values) {
   if(query==null||values==null)query="from "+table;
   else query="from "+table+" where "+query;
   return (List<Object>)getHibernateTemplate().find(query,values);
}
public String Save(Object ob) {
   getHibernateTemplate().save(ob);
   return "success";
}

public String DeleteById(int id) {
   Object u=getHibernateTemplate().load(Package+"."+table, new Integer(id));
   getHibernateTemplate().delete(u);
   return "success";
}

public String Delete(Object ob) {
   // TODO Auto-generated method stub
   getHibernateTemplate().delete(ob);
   return "success";
}

public String Update(Object ob) {
   getHibernateTemplate().update(Package+"."+table,ob);
   return "success";
}
public String SaveOrUpdate(Object ob) {
   getHibernateTemplate().saveOrUpdate(ob);
   return "success";
}
public int FindMaxId() {
   List<Integer> list=getHibernateTemplate().find("select max(id) from "+table);
   if(list!=null && list.size()>=1 && list.get(0)!=null)
    return list.get(0);
   return 0;
}
/** 
* 根据条件统计同记录数 
* @param query 查询的逻辑表达式,例如:name=?
* @param value 将替换query中的'?'
* @return int 总的记录数 
*/ 
public int SumWhere(String query, Object value) {
   // SUM(id) AS Expr1
   if(query==null||value==null)query="select count(id) from "+table;
   else query="select count(id) from "+table+" where "+query;
   List<Long> list=getHibernateTemplate().find(query,value);
   if(list!=null && list.size()>=1 && list.get(0)!=null)
    return list.get(0).intValue();
   return 0;
}
/** 
* 根据条件分页查找 
     * @param hql 查询的条件,例如:from message where type =‘admin’
     * @param currentPage 要查询的页数
     * @param pageSize 每页大小
* @return List   
*/
public List<Object> queryForPage(final String hql,final int currentPage,final int pageSize) {
   // TODO Auto-generated method stub
   List list = getHibernateTemplate().executeFind(new HibernateCallback() {
       public Object doInHibernate(Session session) throws HibernateException, SQLException {
        Query query = session.createQuery(hql);
        query.setFirstResult((currentPage-1)*pageSize);
        query.setMaxResults(pageSize);
        List list = query.list();
        if(list.size()<1)
          return null;
        return list;
       }
       });
       return list;
}
/** 
* 根据条件统计同记录数 
* @param query 查询的逻辑表达式,例如:from message uid=2
* @return int 
*/ 
public int getAllRowCount(String hql) {
   if(hql==null)return 0;
   hql="select count(id) "+hql;
   List<Long> list=getHibernateTemplate().find(hql);
   if(list!=null && list.size()>=1 && list.get(0)!=null)
    return list.get(0).intValue();
   return 0;
}
/** 
* 根据条件查找最上面的记录
     * @param hql 查询的条件,例如 "from Lanmu where type=rule"
     * @param sum 要查询的个数
* @return List   
*/
public List<Object> Top(final int sum,final String hql) {
   // TODO Auto-generated method stub
   List list = getHibernateTemplate().executeFind(new HibernateCallback() {
       public Object doInHibernate(Session session) throws HibernateException, SQLException {
        Query query = session.createQuery(hql);
        query.setFirstResult(0);
        query.setMaxResults(sum);
        List list = query.list();
        if(list.size()<1)return null;
        return list;
       }
       });
       return list;
}




}
 
 
分享到:
评论

相关推荐

    SSH中通用dao类

    5. **异常处理**:在通用DAO中,通常会统一捕获并封装数据库操作中的异常,如`DataAccessException`,并向上抛出更具体的业务异常,以便服务层进行适当的错误处理和反馈。 6. **性能优化**:为了提高性能,通用DAO...

    java ssh通用DAO另类实现示例

    总结:这个另类的Java SSH通用DAO实现利用了动态代理和Hibernate的特性,降低了代码复杂度,提高了代码复用性。它使得DAO层的维护变得更加简单,同时保持了良好的封装性和扩展性。在实际项目中,这样的设计可以显著...

    基于注解ssh的通用dao的crud

    总结起来,基于注解的SSH通用DAO的CRUD实现主要涉及以下步骤: 1. 使用Spring注解定义bean、组件扫描和依赖注入。 2. 在Struts2 Action中定义CRUD操作并使用注解配置请求路径和结果页面。 3. 利用Hibernate注解定义...

    ssh通用泛型DAO

    在这个主题中,我们将深入探讨"ssh通用泛型DAO"的相关知识点。 首先,我们来了解"BaseHibernateDAO"。BaseHibernateDAO是基于Hibernate框架的一个基类,它封装了常见的数据库操作,如增删查改(CRUD)。通过继承这...

    通用SSH2结构的标准代码,通用dao实现类serviceImpl实现类

    通用SSH2结构的增删查改标准代码, bean,HBM文件为自定义, service,dao接口为标准可重用 ...action 调用通用service,service调用通用dao 调用关系用spring 配址文件设置 因为上传限制问题,把lib目录下的jar文件都删掉了

    ssh2 + dao泛型

    在SSH2中,DAO层的泛型应用还有助于单元测试,因为每个具体的DAO实现都可以独立测试,无需关心底层数据源。同时,由于类型安全的特性,编译期就能发现很多潜在的错误,提高了代码质量。 总的来说,"ssh2 + dao泛型...

    Hibernate_通用DAO模式,一个写好的dao层

    本资源“Hibernate_通用DAO模式”提供了一种适用于不同类型表单的DAO实现,基于SSH(Struts2、Spring、Hibernate)框架,特别强调简洁、易懂和高可移植性。 首先,SSH框架是Java Web开发中的经典组合,Struts2负责...

    ssh通用基于泛型的dao

    标题“ssh通用基于泛型的dao”指的是使用SSH(Spring、Struts2、Hibernate)框架开发的一个通用的、基于泛型的DAO实现,它旨在提高开发效率,减少重复工作。 SSH框架是Java企业级应用开发的常用组合,Spring提供了...

    ssh整合下的通用泛型DAO+分页

    在这个特定的讨论中,我们聚焦于SSH1中的一个关键概念:通用泛型DAO(Data Access Object)以及分页功能的实现。DAO层是模型层和数据访问层之间的桥梁,它的主要职责是处理数据库操作,为业务层提供无状态的数据访问...

    SSH 泛型DAO分页

    通过泛型,我们可以创建一个通用的DAO接口和实现,减少代码重复,提高代码复用。例如,我们可以创建一个`BaseDao&lt;T&gt;`接口,其中T代表任何实体类,然后针对每个实体类实现具体的DAO。 5. **分页**: 分页是Web应用中...

    ssh三大框架通用配置

    在SSH框架中实现分页查询,通常在Service层计算总记录数,然后在DAO层使用Hibernate的`setFirstResult()`和`setMaxResults()`方法进行分页。Struts配置中,Action需要接收并处理分页参数(如当前页和每页条数),并...

    SSH 通用分页插件

    综上所述,SSH通用分页插件是Java Web开发中的一个重要工具,它简化了数据分页的实现,提高了代码的可读性和维护性,是SSH框架下处理大数据量查询的必备组件。正确理解和使用此类插件,能够提升项目质量,优化用户...

    SSH框架整合通用模板(内涵自定义标签分页)

    总的来说,SSH框架整合通用模板提供了一个成熟的开发环境,通过自定义标签分页、通用DAO和服务,使得开发人员可以快速构建应用,同时降低了维护成本。对于初学者或熟悉SSH的开发者来说,这是一个很好的学习和实践的...

    SSH泛型DAO+Proxool+DisPlayTag+Jquery easyui

    通过定义一个通用的DAO接口,可以创建一个适用于多种实体类的DAO实现,简化了数据库操作。 5. **Proxool**: Proxool 是一个轻量级的数据库连接池,它可以高效管理数据库连接,避免了频繁创建和销毁连接带来的性能...

    SSH实现的商城项目

    此外,Spring的AOP特性允许我们定义业务逻辑中的通用行为,如事务管理,以模块化的方式插入到各个业务方法中。 **Struts框架** 是一个用于构建MVC(Model-View-Controller)架构的Java Web框架。在本项目中,Struts...

    核心J2EE模式--通用DAO的详细介绍

    ### 核心J2EE模式--通用DAO的详细介绍 #### 一、背景 在现代软件开发尤其是企业级应用中,数据持久化是一个不可或缺的部分。不同的数据源(如关系型数据库、面向对象数据库、文件系统等)往往需要使用不同的访问...

    ssh.zip_SSH分页_ssh的分页实现

    在SSH框架中实现分页,主要涉及到以下几个知识点: 1. **Struts2的Action类**:在Struts2中,Action类是业务逻辑的核心,负责接收用户请求并调用相应的服务进行处理。在分页场景下,Action类需要包含用于获取当前...

    ssh实现分页

    本文将详细介绍如何在SSH框架下实现分页功能。 一、Struts2分页 Struts2提供了ActionContext类,可以访问请求、session和应用范围内的数据,以及用于处理分页的拦截器和结果类型。在Action中,我们可以定义一个...

    eclipse下整合搭建ssh通用项目

    下面我们将详细讨论如何在Eclipse环境下整合并搭建一个SSH通用项目。 首先,我们需要理解SSH框架的每个组件: 1. Struts2:这是一个基于MVC设计模式的Java Web应用框架,用于处理用户请求,控制应用程序流程,并...

Global site tag (gtag.js) - Google Analytics