public abstract class BaseService<T> {
@Resource(name = "sqlSession")
protected SqlSession sqlSession;
protected Class<T> clazz;
protected String DOMAIN_NAME;
protected Logger logger=null ;
@SuppressWarnings("unchecked")
@PostConstruct
public void postConstruct(){
try {
Type type= this.getClass().getGenericSuperclass();
ParameterizedType parameterizedType=(ParameterizedType) type;
clazz= (Class<T>) parameterizedType.getActualTypeArguments()[0];
DOMAIN_NAME =clazz.getName();
} catch (Exception e) {
e.printStackTrace();
clazz=null;
}
logger = LoggerFactory.getLogger(this.getClass());
}
@Transactional(readOnly = true)
public T getByID(Long id)throws Exception {
try {
return sqlSession.selectOne(DOMAIN_NAME + ".selectByPrimaryKey", id);
} catch (Exception e) {
logger.error("根据{}获取{}发生错误:{}", id, DOMAIN_NAME,e.getMessage(), e);
throw e;
}
}
@Transactional
public void saveBase(T entity) throws Exception{
try {
sqlSession.insert(DOMAIN_NAME+".insertSelective",entity);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Transactional
public int updateBase(T entity) throws Exception{
try{
return sqlSession.update(DOMAIN_NAME+".updateByPrimaryKeySelective",entity);
}catch(Exception e){
logger.error(DOMAIN_NAME+"修改时发生错误:{}", e.getMessage(), e);
throw e;
}
}
@Transactional
public void deleteBase(Long id) throws Exception {
try {
sqlSession.delete(DOMAIN_NAME + ".deleteByPrimaryKey", id);
} catch (Exception e) {
logger.error(DOMAIN_NAME+"删除时发生错误:{}", e.getMessage(), e);
throw e;
}
}
}