`
yaoweinan
  • 浏览: 138354 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

一个基于hibernate的超类(仿springside) 已被以后借鉴

 
阅读更多

package com.dao;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Property;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
/**
 * 实现增删改查的超类
 * @author Administrator
 *
 * @param <T>
 * @param <I>
 */
@Transactional
public class DaoSupport<T,I extends Serializable> {
 @Autowired protected SessionFactory factory;
 private Class<T> entityClass;
 @SuppressWarnings("unchecked")
 public DaoSupport() {
  Type genType = getClass().getGenericSuperclass();
  if(genType instanceof ParameterizedType){
   ParameterizedType pra=(ParameterizedType)genType;
   Type[] t=pra.getActualTypeArguments();
   if(t.length>0){
   entityClass=(Class<T>) t[0];
   }else{
   entityClass=(Class<T>) Object.class;
   }
  }else{
   entityClass=(Class<T>) Object.class;
  }
 }
 /**
  * 保存数据
  * @param entity
  */
 public void save(final T entity) {
  factory.getCurrentSession().save(entity);
 }
 /**
  * 更新数据
  * @param entity
  */
 public void update(final T entity){
  factory.getCurrentSession().update(entity);
 }
 /**
  * 删除数据
  * @param entity
  */
 public void delete(final T entity){
  factory.getCurrentSession().delete(entity);
 }
 /**
  * 按照一定顺序获得所有记录
  * @param orderByProperty
  * @param isAsc
  * @return
  */
 @SuppressWarnings("unchecked")
 public List<T> listAll(String orderByProperty, boolean isAsc){
  Criteria c = factory.getCurrentSession().createCriteria(entityClass);
  if(isAsc){
   return c.addOrder(Order.asc(orderByProperty)).list();
  }else{
   return c.addOrder(Order.desc(orderByProperty)).list();
  }
  
  
 }
 
 /**
  * 查找t对象中属性值(非零)相同的数据记录
  * @param t
  * @return
  */
 @SuppressWarnings("unchecked")
 public List<T> queryByAttribute(final T t){
  Example exam=Example.create(t).excludeZeroes();
  return  factory.getCurrentSession().createCriteria(entityClass).add(exam).list();
  
 }
 /**
  * 条件查询语句
  * @param criterions
  * @return
  */
 @SuppressWarnings("unchecked")
 public <X> List<X> query(final List<Criterion>  criterions){
  Criteria cri=factory.getCurrentSession().createCriteria(entityClass);
  for(Criterion criterion:criterions){
   cri.add(criterion);
  }
  return cri.list();
  
 }
 /**
  * 根据唯一编号查找记录
  * @param id
  * @return
  */
 @SuppressWarnings("unchecked")
 public T get(final I id){
  return (T) factory.getCurrentSession().get(entityClass, id);
 }
 public final SessionFactory getFactory() {
  return factory;
 }

 public final void setFactory(final SessionFactory factory) {
  this.factory = factory;
 }
}

分享到:
评论

相关推荐

    SpringSide的Hibernate封装

    总的来说,SpringSide的Hibernate封装是面向实际开发需求的一套解决方案,它不仅简化了DAO层的编写,也提升了代码质量,降低了维护成本,是Spring和Hibernate集成项目中的一个优秀实践。对于开发者来说,理解并熟练...

    struts2+spring3+hibernate3+jquery+springside 做一个OA2

    标题 "struts2+spring3+hibernate3+jquery+springside 做一个OA2" 提供了一个综合的Web开发框架组合,用于构建一个办公自动化(OA)系统。这个系统基于以下技术栈: 1. **Struts2**: Struts2是一个Java Web MVC...

    springside3

    在Java开发中,SpringSide是一个优秀的开源项目,它为Spring框架提供了一种结构化、模块化的使用方式,极大地提高了开发效率。其中,SpringSide 3对Hibernate的使用进行了深入的封装和优化,帮助开发者更好地理解和...

    springside的一个应用实例

    SpringSide是基于Spring框架的一个轻量级、模块化、规范化的开发工具集,旨在提供一种快速、高效且易于维护的Java Web开发模式。在这个实例中,我们将深入探讨如何利用SpringSide进行实际项目开发,特别是其在构建...

    Springside-core-4.1.0/Springside-core-4.1.0

    1. **自动配置**:借鉴了Spring Boot的自动配置思想,SpringSide-core-4.1.0允许开发者通过简单的配置就能启动一个完整的应用环境。 2. **安全框架集成**:集成了Spring Security,提供了用户认证、授权等功能,...

    springside3.0.zip

    SpringSide 3.0 是一个基于Spring框架的开源项目,旨在为Java开发者提供一套高效、简洁的开发规范和工具集。它不仅包含了Spring的核心模块,还整合了其他优秀的开源组件,如Hibernate、Quartz等,以简化企业级应用的...

    SpringSide4 参考手册

    SpringSide是一个开源的Java开发平台,它集成了Spring框架和大量实用的组件,以方便开发人员构建复杂的业务应用。 首先,文档概述了Spring MVC,即Spring的模型-视图-控制器(MVC)框架,它支持Web应用的开发。...

    springside-3.2.2源码

    SpringSide 是一个基于 Spring Framework 的 Java 开发工具集,旨在简化 Spring 应用程序的开发过程,提供一套快速、现代且规范的开发实践。SpringSide 3.2.2 版本是一个成熟的版本,它在之前的版本基础上进行了优化...

    springside开发全面讲解

    springside是一款基于Spring框架的轻量级开发工具集,它为Java开发提供了简洁、高效的解决方案,尤其适合中大型项目的开发。尽管springside集合了多种复杂的技术,但这并不意味着初学者无法涉足。本资料将由浅入深,...

    有springside4.2.3-GA.jar 包

    SpringSide是一个开源的Java企业级开发工具集,它基于Spring Framework,为开发人员提供了一套完整的开发规范和最佳实践。SpringSide 4.2.3-GA作为其稳定版本,集成了许多最新的技术和最佳实践,如Spring 4.x,...

    springside的jar包

    springside是一个开源的Java开发工具集,它为Spring框架提供了额外的支持和便利,使得开发者在基于Spring构建项目时能够更加高效和规范。这个"springside4-4.1.0.GA"的jar包是Springside项目的4.1.0版本的发布,GA...

    springside框架

    它巧妙地融合了Spring、Hibernate、Struts2这三大经典技术,构建了一个强大的权限管理框架,旨在为复杂的企业级应用程序提供简洁、高效的开发环境。 一、Spring的核心魅力 Spring,作为Java领域中广泛使用的轻量级...

    springside3.3.4 使用方法

    Springside项目是基于Spring框架的一个应用架构示例,它提供了一套完整的开发模式来构建企业级Java Web应用程序。Springside 3.3.4版本作为一个成熟的发布版,不仅集成了Spring框架的核心功能,还提供了对其他开源...

    基于Java的SpringSide4 JavaEE应用参考示例设计源码

    SpringSide是一个以Spring Framework为核心的,Pragmatic风格的JavaEE应用参考示例,它总结了JavaEE世界中的主流技术选型和最佳实践,旨在为开发者提供一个高效、便捷的JavaEE应用开发解决方案。

    maven+springside 开发入门

    Maven 是一个项目管理和综合工具,它可以帮助开发者构建、管理和部署Java项目,而Springside则是一个基于Spring框架的快速开发工具集,简化了Spring的使用。 【Maven】: 1. **Maven简介**:Maven是一个基于项目...

    springside示例quickstart的eclipse工程

    SpringSide是一个基于Java的开源项目,旨在为Spring框架提供一个简洁、现代的开发实践样本。它集合了最佳实践,包括Maven构建系统、JUnit测试框架、AspectJ切面编程、Hibernate ORM工具等,以帮助开发者快速上手...

    Springside4 学习整理

    Springside4 是一个基于 JavaEE 平台的开源项目,它围绕 Spring Framework 构建,旨在提供实用的示例和最佳实践。Springside4 不是一个完整的框架,而是一个架构示例,帮助开发者理解和应用一系列主流的 JavaEE 技术...

Global site tag (gtag.js) - Google Analytics