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

通用Service设计

 
阅读更多
import java.util.List;

public interface BaseService<M extends java.io.Serializable, PK extends java.io.Serializable> {

	public M findById(PK id);
	
	public List<M> findByHQL(String hql, Object... params);

	public void update(M entity);
	
	public PK save(M entity);

	public void saveOrUpdate(M entity);

	public void delete(M entity);
	
	public void deleteById(PK id);
}

import java.util.List;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public abstract class BaseServiceImpl<M extends java.io.Serializable, PK extends java.io.Serializable> implements BaseService<M, PK> {

	//这里不能使用spring3的ioc注入,泛型只在编译期间有效,所以必须在编译时决定类型。
	//@Autowired spring4新特性泛型注入可以实现
	//protected BaseDao<M, PK> dao;
	/*public void setDao(BaseDao<M, PK> dao) {
		this.dao = dao;
	}*/
	
	protected BaseDao<M, PK> dao;
	
	@Override
	public M findById(PK id) {
		
		return this.dao.findById(id);
	}

	@Override
	public List<M> findByHQL(String hql, Object... params) {
		
		return this.dao.findByHQL(hql, params);
	}

	@Override
	public void update(M entity) {
		
		this.dao.update(entity);
	}

	@Override
	public PK save(M entity) {
		
		PK id = this.dao.save(entity);
		/* test rollback
		if (id != null)
			throw new RuntimeException("runtime exception throw from " + this.getClass().getSimpleName() + ".save()");
		*/
		return id;
	}

	@Override
	public void saveOrUpdate(M entity) {
		
		this.dao.saveOrUpdate(entity);
	}

	@Override
	public void delete(M entity) {
		
		this.dao.delete(entity);
	}
	
	@Override
	public void deleteById(PK id) {
		
		this.dao.delete(this.findById(id));
	}

}

///////////////////////////////////////////////////////////////
public interface StudentService extends BaseService<Student, String> {

	/**
	 * 添加 IBaseService 没有定义的方法
	 */
	public void serviceMethod();
}

import javax.annotation.Resource; 
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;  

@Service("studentService")
@Transactional
public class StudentServiceImpl extends BaseServiceImpl<Student, String> implements
		StudentService {

	protected StudentDao studentDao;
	@Resource(name = "studentDao")
	public void setStudentDao(StudentDao dao) {
		super.dao = dao;
		this.studentDao = dao;
	}
	
	@Override
	public void serviceMethod() {

		this.studentDao.studentMethod();
	}
}

 

 

分享到:
评论

相关推荐

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

    这个项目"springboot-web-jsp01:mybatis通用servicev.1.0"提供了一个基础的Spring Boot Web应用,结合了MyBatis和通用Service设计,对于初学者或开发者来说,是一个很好的学习和实践案例,帮助理解如何在实际项目中...

    hibernate4 通用dao,service

    标题中的“hibernate4 通用dao,service”指的是在Java开发中使用Hibernate框架实现的通用数据访问对象(DAO)和业务服务层(Service)。Hibernate是一个流行的对象关系映射(ORM)工具,它允许开发者使用面向对象的...

    Mybatis通用DAO设计封装(mybatis)

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

    service层的单体操作抽象设计

    "service层的单体操作抽象设计"这个主题着重于如何在服务层进行高效且可复用的代码组织。这篇博文通过给出的具体文件名,我们可以推测博主可能在讨论如何在Java环境下构建一个服务层的抽象模型。 1. **接口定义** ...

    基于java的两个通用安全模块的设计与实现

    本文将详细探讨基于Java的两个通用安全模块的设计与实现,旨在提供一套适用于多种应用场景的安全解决方案。 首先,我们来了解一下Java语言在安全方面的优势。Java作为一种面向对象的语言,其设计时就考虑到了安全性...

    基于Java的两个通用安全模块的设计与实现(源代码+论文).rar

    在本项目中,我们主要探讨了两个基于Java的通用安全模块的设计与实现,这些模块对于保护软件系统免受潜在威胁至关重要。Java作为一种广泛使用的编程语言,具有跨平台、安全性强的特点,因此,构建在Java上的安全模块...

    概要设计说明书(通用权限管理系统)

    通用权限管理系统概要设计说明书 通用权限管理系统是指管理和维护系统内所有资源的权限控制系统。该系统的设计目标是对应用系统的所有资源进行权限控制,例如应用系统的功能菜单、各个界面的按钮控件等进行权限的...

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

    在MyBatis框架中,Mapper是SQL操作的接口,而逆向工程(Reverse Engineering)则是一种通过分析现有系统来创建新设计或改进现有设计的方法。通用Mapper逆向工程就是利用这一概念,通过解析数据库的表结构信息,自动...

    通用Mapper、RESTful Web Service SSM mybatis 笔记

    RESTful Web Service是一种遵循REST(Representational State Transfer,表述性状态转移)架构约束的Web服务设计风格。它强调资源的表示和通过HTTP方法(GET、POST、PUT、DELETE等)进行操作。在SSM框架中,可以通过...

    基于DDD领域驱动设计通用后台权限系统开发

    **基于DDD领域驱动设计通用后台权限系统开发** 领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法,强调以业务领域为中心进行系统设计,将复杂的业务逻辑转化为清晰的模型。在“基于DDD领域驱动...

    service业务类

    以"base"命名的压缩包文件可能包含了Service层的基础组件或者基类,这些基类通常会提供一些通用的方法,如日志记录、异常处理、事务管理等。开发者可以通过继承这些基类来快速构建自己的Service类,避免重复编写相同...

    wps二次开发moffice-service,moffice-service-base

    `moffice-service-base` 则是基础服务包,它提供了一些通用的服务和基础类,为`moffice-service` 提供支持。这个库可能包括了数据模型、异常处理、日志记录、配置管理等方面的基础组件,帮助开发者更好地管理和组织...

    基于web service的分布式协同cad系统框架.pdf

    Web Service客户端请求具备UDDI(通用描述、发现与集成)功能的服务中心提供查找服务,从而获取相应的WSDL(Web服务描述语言)的网络链接地址。WSDL是XML格式的一种,用于描述网络服务和绑定机制,定义了端点组、...

    运作管理CH3 产品与服务设计 Product and Service Design.ppt

    它强调服务的通用性,以及设计新服务时要考虑用户体验、服务流程、员工培训和客户关系管理。早期的市场调查和客户互动对于确保服务的成功至关重要。 6. 营销与产品开发的协同: 营销部门提供市场需求信息,为新...

    IAS2017- 通用机器学习平台的架构设计.pptx

    《通用机器学习平台的架构设计》 在当前大数据与人工智能技术快速发展的时代,构建一个高效、灵活且可扩展的通用机器学习平台至关重要。星环科技作为行业内的领先者,提出了其通用机器学习平台的架构设计,旨在解决...

    基于REST架构的Web Service设计

    4. 统一接口:REST通过通用的接口(如HTTP方法)来操作资源,简化了客户端和服务器的实现。 在实际开发中,采用REST架构设计Web服务,开发者需要关注以下几点: 1. 设计清晰的资源模型:根据业务需求,定义具有...

    ServiceTool V1.0.5.0 MP198, MP258, MP276, MP496, MP558, MP568, and MP648

    ServiceTool V1.0.5.0 是一款专为佳能(Canon)多款打印机型号设计的维护工具,包括MP198、MP258、MP276、MP496、MP558、MP568以及MP648。这款软件旨在帮助用户解决与这些打印机相关的各种问题,提供诊断、修复、...

    service_sample_Creating_C++_QT_service_daemon_

    QT是一个强大的、跨平台的应用程序开发框架,而C++则是一种通用的、面向对象的编程语言,两者的结合为开发高效且可移植的服务提供了可能。 首先,了解服务和守护进程的概念是必要的。在操作系统中,服务是一种在...

    基于微信小程序的通用报名系统设计与实现.docx

    - **后端服务设计**:采用轻量级3S(Simple Storage Service)方案作为数据存储与管理的核心组件。 - **通信机制**:前后端之间的数据交互采用HTTP/HTTPS协议,确保数据传输的安全性。 4. **关键技术和工具**: ...

Global site tag (gtag.js) - Google Analytics