import com.iloosen.imall.commons.util.BusinessException;
import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable;
import java.util.List;
@Transactional(readOnly = true)
public abstract class BaseEntityManager <E,PK extends Serializable>{
// private Log log = LogFactory.getLog(getClass());
protected abstract EntityDao<E,PK> getEntityDao();
@Transactional(readOnly=true)
public E getById(PK id) throws BusinessException {
return getEntityDao().getById(id);
}
@Transactional(readOnly=true)
public List<E> findAll() throws BusinessException {
return getEntityDao().findAll();
}
/** 根据id检查是否插入或是更新数据 */
@Transactional
public void saveOrUpdate(E entity) throws BusinessException {
getEntityDao().saveOrUpdate(entity);
}
/** 插入数据 */
@Transactional
public void save(E entity) throws BusinessException {
getEntityDao().save(entity);
}
@Transactional
public void removeById(PK id) throws BusinessException {
getEntityDao().deleteById(id);
}
@Transactional
public void update(E entity) throws BusinessException {
getEntityDao().update(entity);
}
@Transactional(readOnly=true)
public boolean isUnique(E entity, String[] uniquePropertyNames) {
return getEntityDao().isUnique(entity, uniquePropertyNames);
}
@Transactional
public void flush() {
getEntityDao().flush();
}
@Transactional(readOnly=true)
public void refresh(BaseEntity entity) {
getEntityDao().refresh(entity);
}
}
分享到:
相关推荐
### Windows Service基本概念 1. **服务类型**:Windows Service有多种类型,如手动、自动、自动延迟启动等,它们决定了服务启动的方式和时机。 2. **服务状态**:包括停止、暂停、继续和启动。服务的状态控制是其...
总的来说,基于Qt的window service服务封装是一种将强大的Qt库应用于系统级服务开发的方法,它简化了Windows Service的创建和管理,使得开发者能够专注于服务的核心功能,而无需过多关注底层细节。通过理解Qt的...
去年写智能设备的时候写的一个 SDK,删了一些不便透露的部分,封装成了一个库,基本功能都有。manger 类和 device 类框架也搭好了,具体的 service 啊 uuid 啊 根据你们硬件来写, 基本方法都差不多一个格式。 ...
Mybatis Plus是一个强大的Mybatis扩展框架,它为Mybatis提供了许多便利的功能,简化了开发过程。...通过使用它的Service层封装和源码学习,开发者能够更好地理解和应用这个框架,进一步优化自己的项目开发流程。
**Retrofit基本应用与封装** Retrofit是Square公司推出的一款优秀的Android网络请求库,它将网络请求接口转换为Java方法,使得开发者可以更加简洁、直观地处理网络请求。本篇文章将深入探讨Retrofit2的基本使用以及...
AFNetworking由AFNetworking Foundation和AFNetworking UIKit两部分组成,分别提供了基本的网络请求功能和UI组件的网络支持。AFNetworking的核心类包括`AFHTTPRequestOperationManager`(已废弃)和`...
这篇博客“对Quartz的简单封装”可能介绍了如何将Quartz的基本功能进行包装,以方便开发者在实际项目中更加便捷地使用。Quartz的核心特性包括可配置的CRON表达式、作业与触发器的组合以及对任务执行的监控。 Quartz...
开发者可能会创建一个通用的Mapper接口,提供基本的CRUD操作,或者封装事务处理、异常处理等常见功能。在这一版本中,封装可能涉及以下几点: 1. **通用Mapper**:创建一个基类Mapper,包含增删改查的通用方法,...
二次封装时,我们可以创建一个MyOkHttp类,将上述功能集成到单例中。这样,开发者只需调用MyOkHttp提供的方法,如`MyOkHttp.get(url).enqueue(callback)`,即可完成网络请求,无需关心内部实现。 总的来说,对...
首先,理解WebService的基本概念:WebService是一种基于Web的、能够进行跨平台交互的服务。它可以使用XML(eXtensible Markup Language)来交换数据,并通过SOAP(Simple Object Access Protocol)协议传输,通常...
本文将深入探讨如何对Retrofit2进行极简封装以及如何实现极简接入,帮助开发者更高效地在Android应用中集成网络功能。 首先,我们了解Retrofit2的基本概念。Retrofit是由Square公司开发的一个类型安全的HTTP客户端...
在Java中,可以使用JAX-WS的wsimport工具,而在.NET中,有Visual Studio的Add Service Reference功能。 2. **请求构造**:封装代码会包含构造SOAP请求的方法,这通常涉及填充XML消息中的参数。例如,如果接口有一个...
### 系统封装图文教程知识点解析 #### 一、引言 ...本教程旨在通过详细的步骤指导和注意事项帮助读者掌握系统封装的基本方法。希望读者能够通过实践,逐渐熟练掌握这项技能,并在实际工作中发挥其作用。
首先,我们需要理解Service的基本概念。在Android中,Service是四大组件之一,它在后台运行,没有用户界面,可以执行长时间的任务。Service可以在同一进程中运行,也可以跨进程运行,后者就需要AIDL的帮助。 1. **...
本项目“安卓音乐播放器相关-简单音乐播放器实现了播放器基本功能使用service后台播放音乐并使用异步线程加载音乐图片”提供了一个基础的实现,下面我们将深入探讨其中的关键知识点。 首先,音乐播放器的核心功能是...
高级功能封装 还可以封装更高级的功能,如上传/下载进度监听、统一处理异常、自动重试策略等。例如,通过自定义Interceptor实现全局的请求头设置,或者在Response拦截器中处理重定向。 ### 5. 使用Retrofit集成 ...
本文将深入探讨如何使用C++调用WebService并封装成动态链接库(DLL),以便其他应用程序能够轻松地调用这些功能。 首先,我们需要理解WebService的基本概念。WebService是一种基于标准的、平台和语言无关的接口,它...
这些方法是封装后对外提供的基本操作,具体的实现会涉及到MongoClient、MongoDatabase和MongoCollection等类的使用。 通过这样的底层封装,开发人员可以专注于业务逻辑,而无需过多关注数据库操作的细节,提高了...
Windows XP Service Pack 3(SP3)是微软对Windows XP操作系统的最后一次重大更新,包含了自SP2以来的所有安全更新、非安全性修复以及一些新的功能改进。在企业环境中,SP3的发布是为了提高系统的稳定性和安全性,...
这个接口通常会包含CRUD(Create, Read, Update, Delete)的基本方法,如`insert`, `update`, `delete`, `selectById`, `selectAll`等。这些方法可以通过Mybatis的注解或XML配置来绑定SQL语句。 2. **动态SQL**: ...