`
jaesonchen
  • 浏览: 313152 次
  • 来自: ...
社区版块
存档分类
最新评论

通用Service设计(泛型方法)

 
阅读更多
import java.io.Serializable;
import java.util.List;

public interface CommonService {

    public <T extends Serializable> T save(T model);

    public <T extends Serializable> void saveOrUpdate(T model);
    
    public <T extends Serializable> void update(T model);
    
    public <T extends Serializable> void merge(T model);
    
    public <T extends Serializable> void delete(T model);

    public <T extends Serializable, PK extends Serializable> void delete(Class<T> entityClass, PK id);

    public <T extends Serializable, PK extends Serializable> T get(Class<T> entityClass, PK id);
    
    public <T extends Serializable> List<T> listAll(Class<T> entityClass);
}

import java.io.Serializable;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service("commonService")
@Transactional
public class CommonServiceImpl implements CommonService {

	@Autowired
    @Qualifier("commonDao")
    private CommonDao commonDao;
	
	@Override
	@Transactional(rollbackFor=MyException.class)
	public <T extends Serializable> T save(T model) {

		T t = this.commonDao.save(model);
		return t;
	}

	@Override
	public <T extends Serializable> void saveOrUpdate(T model) {

		this.commonDao.saveOrUpdate(model);
	}

	@Override
	public <T extends Serializable> void update(T model) {

		this.commonDao.update(model);
	}

	@Override
	public <T extends Serializable> void merge(T model) {

		this.commonDao.merge(model);
	}

	@Override
	public <T extends Serializable> void delete(T model) {

		this.commonDao.delete(model);
	}

	@Override
	public <T extends Serializable, PK extends Serializable> void delete(
			Class<T> entityClass, PK id) {

		this.commonDao.delete(entityClass, id);
	}

	@Override
	public <T extends Serializable, PK extends Serializable> T get(
			Class<T> entityClass, PK id) {
		
		return this.commonDao.get(entityClass, id);
	}

	@Override
	public <T extends Serializable> List<T> listAll(Class<T> entityClass) {

		return this.commonDao.listAll(entityClass);
	}

}

 

 

分享到:
评论

相关推荐

    泛型dao 泛型dao 泛型dao

    泛型dao接口 :GenericDao, ID extends Serializable&gt; 泛型作为DAO的通用接口 CRUD方法 dao接口 : PersonDAO extends GenericDao, Integer&gt; 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 ...

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

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

    Struts2 Spring3 Hibernate 注解功能 DAO 泛型 通用分页

    总的来说,"SSHWithAnnotationDemo"项目展示了如何利用现代Java技术栈的高级特性,包括Struts2、Spring3和Hibernate的注解功能,DAO层的泛型设计以及通用的分页实现,来构建一个高效、可维护的Web应用。这样的实践...

    java泛型BaseDao与BaseService

    在Java开发中,BaseDao和BaseService是常见的设计模式,用于实现数据访问层(DAO)和业务逻辑层(Service)的抽象基类。通过结合泛型,我们可以创建更通用、灵活的代码,减少冗余并提高代码质量。 首先,我们来理解...

    Java源代码带两个类型参数的泛型的应用.rar

    泛型方法** 除了泛型类,我们还可以在方法中使用泛型。这使得方法可以处理多种类型的数据,而无需显式转换。例如,一个交换两个元素的通用方法: ```java public static &lt;T&gt; void swap(Pair, T&gt; pair) { T temp =...

    泛型dao

    对于这些,我们可以进一步扩展泛型DAO,比如引入一个`QueryService`来处理复杂查询,或者提供一个`TransactionService`来管理数据库事务。 至于`XmlDemo`这个文件,它可能包含了一个XML配置文件示例,这在很多Java...

    SpringIOC_泛型依赖注入.zip

    在Java编程中,泛型是一种强大的特性,允许我们在类、接口和方法中使用类型参数,从而实现更通用和强类型的代码。在Spring IOC容器中,我们可以通过泛型依赖注入来指定我们需要注入的对象类型,而无需显式地指定具体...

    反射泛型完美版分页.rar

    它允许我们在类、接口和方法中使用类型参数,从而创建可以操作多种类型的通用代码。例如,ArrayList中的"T"就是一个类型参数,表示这个列表可以存储任何类型的数据。泛型在编译时会进行类型检查,防止了不兼容类型的...

    hibernate4 通用dao,service

    3. Service层的设计:讨论如何在Service层中封装业务逻辑,调用DAO方法,可能还包括异常的捕获和处理,以及事务的控制。 4. 泛型的应用:可能使用Java泛型来提高DAO和Service的复用性,使得一个DAO或Service类可以...

    基于spring MVC 和 MyBatis 泛型的代码生成模板,可以根据自己的需求修改

    例如,你可以创建一个泛型BaseMapper接口,包含通用的CRUD方法,然后每个具体的Mapper接口继承这个BaseMapper,指定具体的实体类型。这样,即使数据库表结构变化,只需修改对应的Mapper,无需改动Service层和...

    SSH 泛型DAO分页

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

    java Spring mvc 新增和修改的泛型帮助类,用同一接口修改相同实体类的属性

    本篇将详细介绍如何利用泛型和Hibernate ORM技术实现一个通用的帮助类,以便在处理相同实体类属性的新增和修改时,通过同一接口进行操作。 首先,泛型是Java语言的一个重要特性,它允许在定义类、接口和方法时使用...

    S2SH整合例子 注解配置 JSON 泛型Dao

    6. **泛型Dao**:在Java开发中,泛型Dao(Generic Dao)是一种设计模式,用于减少重复的数据库操作代码。通过定义一个通用的Dao接口,可以实现对不同类型的实体对象进行CRUD操作,提高了代码的复用性和可维护性。...

    Mybatis通用DAO设计封装(mybatis)

    Mybatis通用DAO设计封装主要涉及的是在Java开发中如何高效地使用Mybatis框架进行数据库操作。Mybatis是一款轻量级的持久层框架,它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过提供自定义SQL、存储...

    Spring中初始化泛型类的方法实例

    总之,Spring在初始化泛型类时,如果没有明确的类型信息,它会使用最通用的类型(通常是`Object`)。而当有依赖注入的字段或方法参数提供了类型信息时,Spring会根据这些信息推断并实例化泛型类的具体类型。这就要求...

    虚拟数据层 Struts2、Hibernate、Spring整合的泛型DAO Version 2010.9.27

    泛型dao接口 :GenericDao, ID extends Serializable&gt; 泛型作为DAO的通用接口 CRUD方法 dao接口 : PersonDAO extends GenericDao, Integer&gt; 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 ...

    springboot-web-jsp01:mybatis通用servicev.1.0

    在本项目"springboot-web-jsp01:mybatis通用servicev.1.0"中,我们关注的是基于Spring Boot的Web应用与MyBatis框架的集成,特别是关于通用Service层的设计。这个版本的通用Service是为了减少开发时的重复工作,针对...

    Struts2+hibernate+spring整合泛型DAO

    而DAO层通过泛型接口和实现类,实现了对所有实体类的通用操作,例如: ```java public interface GenericDao&lt;T&gt; { void save(T entity); T findById(Class&lt;T&gt; clazz, Serializable id); List&lt;T&gt; findAll(Class...

    struts+spring+hibernate通用分页方法

    在文档"struts+spring+hibernate通用分页方法.doc"中,可能会详细阐述如何配置这些框架的整合,如何编写Action、Service、DAO以及视图层的代码,以及如何测试和优化分页性能,例如缓存策略、预加载等。 这个通用...

    mybatis 通用DAO 简单实现

    - **泛型**:使用泛型可以确保DAO方法返回的对象与实体类类型一致,提高了代码的类型安全。 - **事务管理**:通用DAO通常不包含事务控制,需要在服务层(Service Layer)进行事务的开启、提交和回滚。 - **性能优化*...

Global site tag (gtag.js) - Google Analytics