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接口 :GenericDao, ID extends Serializable> 泛型作为DAO的通用接口 CRUD方法 dao接口 : PersonDAO extends GenericDao, Integer> 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 ...
在这个特定的讨论中,我们聚焦于SSH1中的一个关键概念:通用泛型DAO(Data Access Object)以及分页功能的实现。DAO层是模型层和数据访问层之间的桥梁,它的主要职责是处理数据库操作,为业务层提供无状态的数据访问...
总的来说,"SSHWithAnnotationDemo"项目展示了如何利用现代Java技术栈的高级特性,包括Struts2、Spring3和Hibernate的注解功能,DAO层的泛型设计以及通用的分页实现,来构建一个高效、可维护的Web应用。这样的实践...
在Java开发中,BaseDao和BaseService是常见的设计模式,用于实现数据访问层(DAO)和业务逻辑层(Service)的抽象基类。通过结合泛型,我们可以创建更通用、灵活的代码,减少冗余并提高代码质量。 首先,我们来理解...
泛型方法** 除了泛型类,我们还可以在方法中使用泛型。这使得方法可以处理多种类型的数据,而无需显式转换。例如,一个交换两个元素的通用方法: ```java public static <T> void swap(Pair, T> pair) { T temp =...
对于这些,我们可以进一步扩展泛型DAO,比如引入一个`QueryService`来处理复杂查询,或者提供一个`TransactionService`来管理数据库事务。 至于`XmlDemo`这个文件,它可能包含了一个XML配置文件示例,这在很多Java...
在Java编程中,泛型是一种强大的特性,允许我们在类、接口和方法中使用类型参数,从而实现更通用和强类型的代码。在Spring IOC容器中,我们可以通过泛型依赖注入来指定我们需要注入的对象类型,而无需显式地指定具体...
它允许我们在类、接口和方法中使用类型参数,从而创建可以操作多种类型的通用代码。例如,ArrayList中的"T"就是一个类型参数,表示这个列表可以存储任何类型的数据。泛型在编译时会进行类型检查,防止了不兼容类型的...
3. Service层的设计:讨论如何在Service层中封装业务逻辑,调用DAO方法,可能还包括异常的捕获和处理,以及事务的控制。 4. 泛型的应用:可能使用Java泛型来提高DAO和Service的复用性,使得一个DAO或Service类可以...
例如,你可以创建一个泛型BaseMapper接口,包含通用的CRUD方法,然后每个具体的Mapper接口继承这个BaseMapper,指定具体的实体类型。这样,即使数据库表结构变化,只需修改对应的Mapper,无需改动Service层和...
通过泛型,我们可以创建一个通用的DAO接口和实现,减少代码重复,提高代码复用。例如,我们可以创建一个`BaseDao<T>`接口,其中T代表任何实体类,然后针对每个实体类实现具体的DAO。 5. **分页**: 分页是Web应用中...
本篇将详细介绍如何利用泛型和Hibernate ORM技术实现一个通用的帮助类,以便在处理相同实体类属性的新增和修改时,通过同一接口进行操作。 首先,泛型是Java语言的一个重要特性,它允许在定义类、接口和方法时使用...
6. **泛型Dao**:在Java开发中,泛型Dao(Generic Dao)是一种设计模式,用于减少重复的数据库操作代码。通过定义一个通用的Dao接口,可以实现对不同类型的实体对象进行CRUD操作,提高了代码的复用性和可维护性。...
Mybatis通用DAO设计封装主要涉及的是在Java开发中如何高效地使用Mybatis框架进行数据库操作。Mybatis是一款轻量级的持久层框架,它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过提供自定义SQL、存储...
总之,Spring在初始化泛型类时,如果没有明确的类型信息,它会使用最通用的类型(通常是`Object`)。而当有依赖注入的字段或方法参数提供了类型信息时,Spring会根据这些信息推断并实例化泛型类的具体类型。这就要求...
泛型dao接口 :GenericDao, ID extends Serializable> 泛型作为DAO的通用接口 CRUD方法 dao接口 : PersonDAO extends GenericDao, Integer> 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 ...
在本项目"springboot-web-jsp01:mybatis通用servicev.1.0"中,我们关注的是基于Spring Boot的Web应用与MyBatis框架的集成,特别是关于通用Service层的设计。这个版本的通用Service是为了减少开发时的重复工作,针对...
而DAO层通过泛型接口和实现类,实现了对所有实体类的通用操作,例如: ```java public interface GenericDao<T> { void save(T entity); T findById(Class<T> clazz, Serializable id); List<T> findAll(Class...
在文档"struts+spring+hibernate通用分页方法.doc"中,可能会详细阐述如何配置这些框架的整合,如何编写Action、Service、DAO以及视图层的代码,以及如何测试和优化分页性能,例如缓存策略、预加载等。 这个通用...
- **泛型**:使用泛型可以确保DAO方法返回的对象与实体类类型一致,提高了代码的类型安全。 - **事务管理**:通用DAO通常不包含事务控制,需要在服务层(Service Layer)进行事务的开启、提交和回滚。 - **性能优化*...