/****************************************************************************** * Copyright (C) 2015 Shenzhen Penguin Network Technology Co., Ltd * All Rights Reserved. * 本软件为深圳市企鹅网络科技有限公司开发研制。未经本公司正式书面同意,其他任何个人、团体 * 不得使用、复制、修改或发布本软件. *****************************************************************************/ package com.qxueyou.scc.base.service.impl; import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Map; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import com.querydsl.jpa.impl.JPAQueryFactory; import com.qxueyou.scc.base.dao.CommonDAO; import com.qxueyou.scc.base.model.ITrace; import com.qxueyou.scc.base.model.Pager; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.service.ICommonService; import com.qxueyou.scc.base.util.TraceUtils; import com.qxueyou.scc.sys.model.SysDictionary; @Service(value = "commonAppService") /** * @author 夏德虎 * @since JDK1.7 * @history 2014-11-18 夏德虎 新建 */ public class CommonAppService implements ICommonService { /** * 获取事务管理器 */ @PersistenceContext public EntityManager em; /** * 获取querydsl 查询工厂 */ public JPAQueryFactory queryFactory; private CommonDAO commonDAO; public CommonDAO getCommonDAO(){ return commonDAO; } public JPAQueryFactory getQueryFactory() { return new JPAQueryFactory(em); } /** * 删除实体 * @param trace */ public void deleteTrace(ITrace trace) { trace.setDeleteFlag(true); TraceUtils.setUpdateTrace(trace); save(trace); } /** * 删除实体集合 * @param traces */ public void deleteTraces(List traces) { for (ITrace trace : traces) { deleteTrace(trace); } } /** * 依赖注入 * * @param commonDAO */ @Autowired(required = false) public void setCommonDAO(@Qualifier("commonDao") CommonDAO commonDAO) { this.commonDAO = commonDAO; } /** * 读取对象 * @param 泛型 * @param clz 实体类型 * @param pk 实体主键 * @return 查询结果 */ public T read(Class clz,Serializable pk){ return this.commonDAO.read(clz, pk); } /** * 保存对象 * @return 查询结果 */ public Result save(Object obj){ this.commonDAO.saveOrUpdate(obj); return new Result(true); } /** * 刷新对象 手动提交 * @return 查询结果 */ public void flush(){ getCommonDAO().getHibernateTemplate().flush(); } /** * 清除缓存 */ public void clearCache(){ getCommonDAO().getHibernateTemplate().clear(); } /** * 清除单个缓存 */ public void evict(Object obj){ getCommonDAO().getHibernateTemplate().evict(obj); } /** * 保存对象 * @return 查询结果 */ public Result insert(Object obj){ this.commonDAO.save(obj); return new Result(true); } /** * 保存对象 * @return 查询结果 */ @SuppressWarnings("rawtypes") public Result saveOrUpdateAll(Collection collection){ commonDAO.saveOrUpdateAll(collection); return new Result(true); } /** * 根据hql查询,并返回执行类型的列表结果 * @param hql 查询语句 * @param args 参数 * @param cls 返回类型 * @return */ public List find(String hql,List args,Class cls){ return this.commonDAO.find(hql, args, cls); } /** * 根据hql查询,并返回执行类型的列表结果 * * @param hql 查询语句 * @param cls 返回类型 * @return */ public int findCount(String hql, List args) { return this.commonDAO.findCount(hql, args); } /** * 保存或更新对象 */ public void deleteAll(@SuppressWarnings("rawtypes") Collection col) { this.commonDAO.deleteAll(col); } /** * 根据hql查询,并返回执行类型的唯一结果 * @param hql 查询语句 * @param args 参数 * @param cls 返回类型 * @return */ public T findUnique(String hql,List args,Class cls){ return this.commonDAO.findUnique(hql, args, cls); } /** * 使用sql查询结果 * @param sql * @param args * @return */ @SuppressWarnings("rawtypes") public List findBySql(final String sql,final List args){ return this.commonDAO.findBySql(sql, args); } /** * 使用sql查询结果 * @param sql * @param args * @return */ @SuppressWarnings("rawtypes") public List findByPageSql(final String sql,final List args, final Pager pager){ return this.commonDAO.findByPageSql(sql, args, pager); } /** * 使用sql查询结果 * @param sql * @param args * @return */ public int findCountBySql(final String sql,final List args){ return this.commonDAO.findCountBySql(sql, args); } public Result bulkUpdate(String hql, Object args[]) { return this.commonDAO.bulkUpdate(hql, args); } public Result executeProduce(String sql, Object args[]) { return this.commonDAO.executeProduce(sql, args); } public int executeDelete(String sql, Object args[]) { return this.commonDAO.executeSqlDelete(sql, args); } /** * hql只含单一参数 * * @param hql 查询语句 * @param args 参数数组 * @param cls 返回类型 * @return */ public Result bulkUpdateInLoop(String hql, Object args[]) { return this.commonDAO.bulkUpdateInLoop(hql, args); } /** * 复杂hql * @param sql * @param map * @param cls * @return */ public List findByComplexHql(final String hql, final Map map, Class cls){ return this.commonDAO.findByComplexHql(hql, map, cls); } /** * 复杂hql * @param sql * @param map * @param cls * @return */ public T findUniqueByHql(final String hql, final Map map){ return commonDAO.findUniqueByHql(hql, map); } /** * 复杂hql * @param sql * @param map * @param cls * @return */ public List findByComplexHql(final String hql, final Pager page, final Map map, Class cls){ return this.commonDAO.findByComplexHql(hql, page, map, cls); } /** * 返回个数 复杂hql * * @param hql 查询语句 * @param cls 返回类型 * @return */ public int findCountByComplexHql(final String hql, final Map map) { return this.commonDAO.findCountByComplexHql(hql, map); } /** * 返回个数 复杂sql * * @param hql 查询语句 * @param cls 返回类型 * @return */ public int findCountByComplexSql(final String hql, final Map map) { return this.commonDAO.findCountByComplexSql(hql, map); } /** * 复杂sql * @param sql * @param map * @param cls * @return */ public List findByComplexSql(final String sql, final Map map, Class cls){ return this.commonDAO.findByComplexSql(sql, map, cls); } /** * 复杂hql * @param sql * @param map * @param cls * @return */ public List findByComplexSql(final String sql, final Pager page, final Map map, Class cls){ return this.commonDAO.findByComplexSql(sql, page, map, cls); } /** * 根据hql查询,并返回执行类型的列表结果,列表数据为Map * @param hql * @param map * @return */ public List> findListWithMapByHql(final String hql, final Map map){ return this.commonDAO.findListWithMapByHql(hql, map); } /** * 根据hql查询,并返回执行类型的列表结果,列表数据为Map * @param hql * @param args * @return */ public List> findListWithMapByHql(final String hql, final Map args,final Pager page){ return this.commonDAO.findListWithMapByHql(hql, args,page); } /** * 分页查询 * @param hql * @param page * @param args * @param cls * @return */ public List findList(final String hql, final Pager page, final List args,Class cls){ return this.commonDAO.findList(hql, page, args, cls); } /** * 查询 * @param hql * @param args * @return */ public List findwithRawResult(String hql, List args) { return this.commonDAO.findwithRawResult(hql, args); } /** * 根据配置key查询value值 * @param key * @return */ public String queryConfigValue(String key){ return this.commonDAO.queryConfigValue(key); } /** * 根据字典类型查询字典内容的list * @param dicType * @return */ public List queryDictConfigMap(String dicType){ return this.commonDAO.queryDictConfigMap(dicType); } }