`

Spring中常用的持久层参考代码

 
阅读更多
public interface BaseDAO {
     void save(T instance);
     void update(T instance);
     void delete(T instance);
     T get(String id);
     List<T> findAll();
     List<T> findByExample(T instance);
     int bulkUpdate(String hql);
     int bulkUpdate(String hql, Object value);
     int bulkUpdate(String hql, Object[] value);
     List<T> find(String queryString);
     List<T> find(String queryString, Object obj);
     List<T> find(String queryString, Object[] obj);
     List<T> findByNamedParam(String queryString, String paramName, Object value);
     List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values);
     List<T> findByNamedQuery(String queryName);
     List<T> findByNamedQuery(String queryName, Object value);
     List<T> findByNamedQuery(String queryName, Object[] values);
     List<T> findByProperty(String property, Object value);
     List<T> findByPagination(final T t, final int firstResult, final int maxResult);
     int countByPagination(final T t);
}
实现类:
import java.sql.*;
import java.util.List;
import org.hibernate.*;
import org.hibernate.criterion.*;
import org.springframework.orm.hibernate3.*;
import org.springframework.orm.hibernate3.support.*;

import com.vo.T;

public abstract class BaseDAOImpl extends HibernateDaoSupport implements BaseDAO{ 

protected abstract Class type();  //反射方法调用类 

// 保存 
public void save(T instance) { 
getHibernateTemplate().save(instance); 
} 

// 更新 
public void update(T instance) { 
getHibernateTemplate().update(instance); 
} 

// 删除 
public void delete(T instance) { 
getHibernateTemplate().delete(instance); 
} 

// 根据ID查询 
@SuppressWarnings("unchecked") 
public T get(String id) { 
return (T) getHibernateTemplate().get(type(), id); 
} 

// 查询所有 
@SuppressWarnings("unchecked") 
public List<T> findAll() { 
return getHibernateTemplate().loadAll(type());
} 

// 根据例子查询 

@SuppressWarnings("unchecked")
public List<T> findByExample(T instance) { 
return getHibernateTemplate().findByExample(instance); 
} 

// 根据HQL语句进行update操作等 
public int bulkUpdate(String hql) { 
return getHibernateTemplate().bulkUpdate(hql); 
} 

// 根据HQL语句进行update操作等 
public int bulkUpdate(String hql, Object value) { 
return getHibernateTemplate().bulkUpdate(hql, value); 
} 

// 根据HQL语句进行update操作等 
public int bulkUpdate(String hql, Object[] value) { 
return getHibernateTemplate().bulkUpdate(hql, value); 
} 

// 根据HQL语句进行查询 
@SuppressWarnings("unchecked") 
public List<T> find(String queryString) { 
return getHibernateTemplate().find(queryString); 
} 

// 根据HQL语句进行查询 
@SuppressWarnings("unchecked") 
public List<T> find(String queryString, Object obj) { 

return getHibernateTemplate().find(queryString, obj); 
} 

// 根据HQL语句进行查询 
@SuppressWarnings("unchecked") 
public List<T> find(String queryString, Object[] obj) { 
return getHibernateTemplate().find(queryString, obj); 
} 

/** 
* 使用命名查询进行查询 
* 
* @param queryString 
*            HQL 
* @param paramName 
*            参数名 
* @param value 
*            参数值 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByNamedParam(String queryString, String paramName, Object value) { 
return this.getHibernateTemplate().findByNamedParam(queryString, paramName, value); 
} 

/** 
* 使用命名查询进行查询 多个参数 
* 
* @param queryString 
*            HQL 
* @param paramNames 
*            参数名的数组 
* @param values 
*            参数值的数组 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values) { 
return this.getHibernateTemplate().findByNamedParam(queryString, paramNames, values); 
} 

/** 
* 使用HIBERNATE映射文件中的定义的HQL语句进行查询 
* 
* @param queryName 
*            文件中定义的HQL语句的名字 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByNamedQuery(String queryName) { 
return getHibernateTemplate().findByNamedQuery(queryName); 
} 

/** 
* 
* @param queryName 
* @param value 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByNamedQuery(String queryName, Object value) { 
return getHibernateTemplate().findByNamedQuery(queryName, value); 
} 

/** 
* 
* @param queryName 
* @param values 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByNamedQuery(String queryName, Object[] values) { 
return getHibernateTemplate().findByNamedQuery(queryName, values); 
} 

/** 
* 根据属性查询 
* 
* @param property 
* @param value 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByProperty(String property, Object value) { 
return this.getHibernateTemplate().findByCriteria( 
DetachedCriteria.forClass(type()).add(Restrictions.eq(property, value))); 
} 

/** 
* 分页查询 
* 注:不能满足要求子类重写该方法 
* @param t 
* @param firstResult 
* @param maxResult 
* @return 返回分页查询的数据 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByPagination(final T t, final int firstResult, final int maxResult) { 
return getHibernateTemplate().executeFind(new HibernateCallback() { 
public Object doInHibernate(Session session) throws HibernateException, SQLException { 
Criteria criteria = session.createCriteria(type()); 
criteria.add(Example.create(t).enableLike(MatchMode.ANYWHERE)); 
criteria.setFirstResult(firstResult); 
criteria.setMaxResults(maxResult); 
return criteria.list(); 
} 
}); 
} 

/** 
* 分页统计查询 
* 
* @param t 
* @return 一共有多少条数据 
*/ 
@SuppressWarnings("unchecked") 
public int countByPagination(final T t) { 
return (Integer) getHibernateTemplate().execute(new HibernateCallback() { 
public Object doInHibernate(Session session) throws HibernateException, SQLException { 
Criteria criteria = session.createCriteria(type()); 
criteria.setProjection(Projections.rowCount()); 
criteria.add(Example.create(t).enableLike(MatchMode.ANYWHERE)); 
return criteria.uniqueResult(); 
} 
}); 
} 
}

反射类:

public class ClassInfoDAO{ 

    @SuppressWarnings("unchecked") 
    protected Class type() { 
    return User.class; 
   } 

} 
分享到:
评论

相关推荐

    spring 2.0中文参考手册

    在数据访问层面,Spring提供了对多种持久层技术的支持,如JDBC、ORM框架(如Hibernate、MyBatis)以及JPA。它提供了一致的编程模型,简化了数据访问操作,并支持事务管理,使得数据库操作与业务逻辑解耦。 在Web...

    spring Framework 中文参考开发手册

    Spring Data 是 Spring 社区的一个项目,旨在简化数据库访问,提供对各种持久层技术的统一抽象,包括 JPA、JDBC 和 NoSQL 数据库。它支持使用注解驱动的方法来执行 CRUD 操作,减少了大量重复的模板代码。 **7. ...

    spring2.5.2开发参考手册pdf,spring2.5.ppt,Spring2.5-中文参考手册.chm

    此外,手册还涵盖了Spring与JDBC、Hibernate、MyBatis等持久层框架的集成,以及Spring MVC的使用。 2. **Spring 2.5 PPT**: 这个PPT可能是一个关于Spring 2.5的演示文稿,通常会包含关键概念的可视化表示、示例...

    Spring Framework 4.1.3 API Documentation参考文档CHM版

    4. **数据访问**:Spring提供了JDBC抽象层,简化了数据库操作,同时支持ORM(Object-Relational Mapping)框架,如Hibernate和JPA,方便进行对象持久化。 5. **事务管理**:Spring的事务管理支持编程式和声明式两种...

    Spring Framework 中文参考手册.pdf

    依赖注入是Spring框架的核心特性之一,它通过反转控制(Inversion of Control,IoC)实现,允许开发者将对象间的依赖关系交由框架管理,而非硬编码在代码中。这样做的好处在于提高了代码的可测试性,降低了组件间的...

    spring、mybatis企业应用实战全书代码

    《Spring与Mybatis企业应用实战全书》的代码资源涵盖了Spring框架、Mybatis持久层框架以及SpringMVC的实战应用,对于JavaEE开发者来说是一份非常宝贵的参考资料。这份压缩包包含的不仅仅是源码,更是深入理解和实践...

    spring开发参考手册

    以上只是《Spring开发参考手册》中的一部分核心内容,实际手册会涵盖更多细节,如Spring Boot、Spring Cloud等扩展技术,以及详细的API文档和最佳实践。这份手册对于理解和熟练使用Spring框架至关重要。

    spring-reference2.5中文参考文档.pdf

    Spring提供了一套数据访问抽象层,包括对JDBC、Hibernate、JPA等持久化技术的支持,简化了数据访问操作,并且提供了异常转换机制,使得异常处理更加一致和友好。 #### 4. **MVC框架** Spring MVC是一个轻量级的...

    spring boot 登陆注册的全部代码。

    Spring Boot 可以轻松集成多种数据库,如 MySQL、PostgreSQL 等,通过 Spring Data JPA 或 MyBatis 等持久层框架进行操作。数据库模型通常包含 User 表,包含用户名、密码、角色等字段。 4. **密码加密**: 为了保护...

    Spring数据JPA - 中文参考文档

    在 Spring 中,JPA 与 Spring Data 结合,进一步简化了数据访问层的开发。 4. 使用 Spring 数据存储库 Spring Data 存储库抽象的主要目标是减少与持久化相关的样板代码。`Repository` 接口是整个抽象的核心,它是...

    spring2.5.6源代码及api

    在源代码中,`org.springframework.web.servlet`包包含了MVC的核心组件,如`DispatcherServlet`、`ModelAndView`和`HandlerMapping`。 5. **事务管理(Transaction Management)**:Spring 2.5.6提供了强大的事务...

    Spring Framework 中文开发参考手册

    此外,Spring Data模块提供了与各种持久层技术(如JPA、Hibernate、MyBatis等)的整合,简化了数据访问层的开发。手册会详细介绍如何使用Spring Data JPA进行ORM(对象关系映射)操作。 Spring MVC是构建Web应用的...

    Spring Framework2.5中文参考手册

    4. **数据访问**:Spring提供了对各种持久层技术(如JDBC、Hibernate、JPA)的集成,简化了数据库操作。它还支持声明式事务管理,使得事务处理更加透明。 5. **MVC框架**:Spring MVC是Spring为构建Web应用提供的...

    Spring Framework 开发参考手册(中文)

    - **介绍**:Spring Data项目中的一个子模块,用于简化Java持久层的开发,提供了一种声明式的JPA实现。 - **作用**:大大减少了编写DAO层代码的工作量,提高了开发效率。 #### 6. **Spring Boot** - **介绍**:...

    Spring Framework 2.0开发参考手册(中文版chm)

    在数据访问集成方面,Spring提供了对各种持久层技术的支持,如JDBC、Hibernate、iBatis和JPA等。Spring的JdbcTemplate和HibernateTemplate提供了简洁的API,用于执行数据库操作,同时降低了与数据库交互的复杂性。...

    spring2.0中文开发参考手册

    4. **数据访问集成**:Spring支持多种持久层技术,包括JDBC、ORM框架(如Hibernate、MyBatis)和O/R映射。它提供了事务管理、数据源配置以及模板类,简化了数据库操作。 5. **MVC框架**:Spring MVC是Spring提供的...

    struts+spring+mybatis源代码例子

    描述中提到的"ruts+spring+mybatis源代码例子,留给大家参考"表明这个压缩包提供的不仅仅是一段代码片段,而是一个完整的可运行示例,适合开发者用来参考和学习。这样的例子通常会包含配置文件、实体类、DAO(数据...

    Spring1.2api参考手册.zip

    8. **DAO支持**:Spring为数据访问对象(DAO)提供了基类和异常层次结构,简化了与各种持久层技术(如JDBC、Hibernate、JPA等)的集成。 9. **MVC框架**:Spring MVC是Spring用于构建Web应用程序的模块,它提供了一...

    精通spring--源代码

    精通spring 源代码 对JavaEE5及Spring2.5进行了综述。包括Java EE5,步入Spring2.5,获得Spring2.5发布版和源码。启动Spring2.5使能项目  详细介绍Spring2.5核心技术。包括控制反转容器,面向切面编程  对DA0层...

Global site tag (gtag.js) - Google Analytics